看到osc是用cos来做上传处理,我也来贴段我使用的代码。(大部分都是偷得红薯的)
[代码]up.html
无标题文档
[代码]upload.jsp
<%@page import="java.io.*"%><%@page import="java.util.Enumeration"%><%@page import="com.cos.util.CustomFileRenamePolicy"%><%@page import="com.oreilly.servlet.MultipartRequest"%><%@page contentType="text/html; charset=gb2312"%><% //文件上传后,保存在c:\\upload String saveDirectory = "c:\\"; //每个文件最大5m,最多3个文件,所以 int maxPostSize = 3 * 5 * 1024 * 1024; //response的编码为"gb2312",同时采用缺省的文件名冲突解决策略,实现上传 //就这一句就完成上传了,真是很爽 //MultipartRequest multi = new MultipartRequest(request, saveDirectory, maxPostSize, "gb2312"); // 实现文件重命名 MultipartRequest multi = new MultipartRequest(request, saveDirectory, maxPostSize, "gb2312", // 自定义COS命名策略文件 new CustomFileRenamePolicy()); //输出反馈信息 Enumeration files = multi.getFileNames(); while (files.hasMoreElements()) { String name = (String) files.nextElement(); File f = multi.getFile(name); if (f != null) { String fileName = multi.getFilesystemName(name); System.err.println("上传的文件名:" + fileName); String lastFileName = saveDirectory + "\\" + fileName; out.println("上传的文件:" + lastFileName); out.println("[代码]CustomFileRenamePolicy.java
"); // 限制文件类型方面。红薯老大说“cos限制不了,要自己控制,通过文件扩展名来限制” // 这是我想到的:根据MIME判断是否是合法的文件类型,不是则删除 if (!multi.getContentType(name).contains("image")) { new File(lastFileName).delete(); } } }%>
package com.cos.util;import java.io.File;import java.util.UUID;import com.oreilly.servlet.multipart.FileRenamePolicy;/** * * Description: 自定义COS命名策略文件 * * */public class CustomFileRenamePolicy implements FileRenamePolicy { public File rename(File file) { // 生成UUID String uuid = UUID.randomUUID().toString().replaceAll("-", ""); int index = file.getName().lastIndexOf("."); // 新文件名 = uuid + 后缀名 String newName = uuid + file.getName().substring(index); file = new File(file.getParent(), newName); return file; }}参考文档: