81,092
社区成员
发帖
与我相关
我的任务
分享
package servlet;
import java.io.File;
import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Iterator;
import java.util.List;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.commons.fileupload.FileItem;
import org.apache.commons.fileupload.FileUploadException;
import org.apache.commons.fileupload.disk.DiskFileItemFactory;
import org.apache.commons.fileupload.servlet.ServletFileUpload;
public class UploadifyDemo extends HttpServlet {
private static final long serialVersionUID = 1L;
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
uploadify(req, resp);
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
doGet(req, resp);
}
@SuppressWarnings({ "rawtypes", "unchecked" })
public void uploadify(HttpServletRequest req, HttpServletResponse resp) throws IOException {
req.setCharacterEncoding("UTF-8");
resp.setCharacterEncoding("UTF-8");
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
String dir = "upload/" + sdf.format(new Date());//按日期生成存放目录
String savePath = this.getServletConfig().getServletContext()
.getRealPath(dir);
File f1 = new File(savePath);
if (!f1.exists()) {
f1.mkdirs();
}
f1 = null;
DiskFileItemFactory fac = new DiskFileItemFactory();
ServletFileUpload upload = new ServletFileUpload(fac);
upload.setHeaderEncoding("UTF-8");
List fileList = null;
try {
fileList = upload.parseRequest(req);
} catch (FileUploadException ex) {
ex.printStackTrace();
return;
}
if(fileList == null){
return;
}
Iterator<FileItem> it = fileList.iterator();
String name = "";
String extName = "";
while (it.hasNext()) {
FileItem item = it.next();
if (!item.isFormField()) {
name = item.getName();
if (name == null || name.trim().equals("")) {
continue;
}
//文件后缀名 如:.jpg
if (name.lastIndexOf(".") >= 0) {
extName = name.substring(name.lastIndexOf("."));
}
//\s去除任何空空白符如: 空格符、制表符和进纸符等
String fileName = name.replaceAll("\\s", "");
fileName = fileName.substring(0, fileName.lastIndexOf(".") - 1);
// 仅仅是为了判断当前命名的文件是否已存在
File f = new File(savePath + "/" + fileName + extName);
while (f.exists()) {//如果文件存在,在文件名后加上随机数做区分
/* 日期+100以内的随机数 */
int rand = (int) Math.round(Math.random() * 100);
sdf = new SimpleDateFormat("HHMMss");
fileName += "_"+sdf.format(new Date()) + rand;
f = new File(savePath + "/" + fileName + extName);
}
f = null;
File saveFile = new File(savePath + "/" + fileName
+ extName);
try {
item.write(saveFile);
} catch (Exception e) {
e.printStackTrace();
}
System.out.println(dir + "/" + fileName + extName);//返回相对根路径:http://xx.xx.com/upload/songs/2010/06/05/ring.mp3
resp.getWriter().print("文件" + fileName + "上传成功");
}
}
}
}