日期:2014-05-19 浏览次数:20939 次
// 解析 request,判断是否有上传文件
boolean isMultipart = ServletFileUpload.isMultipartContent(request);
if (isMultipart) {
// 创建磁盘工厂,利用构造器实现内存数据储存量和临时储存路径
String tempdir = request.getRealPath("/Attachment/temp");
DiskFileItemFactory factory = new DiskFileItemFactory(1024 * 4, new File(tempdir));
// 设置最多只允许在内存中存储的数据,单位:字节
// factory.setSizeThreshold(4096);
// 设置文件临时存储路径
// factory.setRepository(new File("D:\\Temp"));
// 产生一新的文件上传处理程式
ServletFileUpload upload = new ServletFileUpload(factory);
// 设置路径、文件名的字符集
upload.setHeaderEncoding("UTF-8");
// 设置允许用户上传文件大小,单位:字节
upload.setSizeMax(1024 * 1024 * 100);
// 解析请求,开始读取数据
// Iterator<FileItem> iter = (Iterator<FileItem>) upload.getItemIterator(request);
// 得到所有的表单域,它们目前都被当作FileItem
List fileItems = upload.parseRequest(request); //FileItem
// 依次处理请求
Iterator iter = fileItems.iterator(); //FileItem
while (iter.hasNext()) {
FileItem item = (FileItem) iter.next();
if (item.isFormField()) {
// 如果item是正常的表单域
String name = item.getFieldName();
String value = item.getString("UTF-8");
System.out.println("表单域名为:"+name+"表单域值为:"+value);
} else {
// 如果item是文件上传表单域
// 获得文件名及路径
String fileName = item.getName();
if (fileName != null) {
// 如果文件存在则上传
//String fullName = tempdir+"/"+item.getName();
File fullFile = new File(fileName);
if (fullFile.exists()) {
String targetDirectory = request.getRealPath("/Attachment");
String path = targetDirectory+"/" + fullFile.getName();
File fileOnServer = new File(path);
item.write(fileOnServer);
System.out.println("文件" + fileOnServer.getName() + "上传成功");
}
}
}
}
}