看到osc是用cos来做上传处理,我也来贴段我使用的代码。(大部分都是偷得红薯的)
[代码]up.html
<html>
<head>
<meta http-equiv="Content-Type" content="text/html;charset=gb2312">
<title>无标题文档</title>
</head>
<body>
<!-- enctype的值很重要,upload.jsp为处理上传的jsp-->
<form name="form1" method="post" enctype="multipart/form-data"
action="upload.jsp">
<p>
<input name="file1" type="file">
</p>
<p>
<input name="file2" type="file">
</p>
<p>
<input name="file3" type="file">
</p>
<p>
<input type="submit" name="Submit" value="上传">
</p>
</form>
</body>
</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("<hr>");
// 限制文件类型方面。红薯老大说“cos限制不了,要自己控制,通过文件扩展名来限制”
// 这是我想到的:根据MIME判断是否是合法的文件类型,不是则删除
if (!multi.getContentType(name).contains("image")) {
new File(lastFileName).delete();
}
}
}
%>
[代码]CustomFileRenamePolicy.java
package com.cos.util;
import java.io.File;
import java.util.UUID;
import com.oreilly.servlet.multipart.FileRenamePolicy;
/**
*
* Description: 自定义COS命名策略文件 <br>
*
*
*/
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;
}
}
参考文档:
http://www.oschina.net/code/snippet_12_1344
http://blog.sina.com.cn/s/blog_52f605350100c2c7.html