码迷,mamicode.com
首页 > 其他好文 > 详细

FileUploadTool

时间:2016-05-09 21:58:37      阅读:171      评论:0      收藏:0      [点我收藏+]

标签:

public class FileUpload {
/**
*
* @param req
* 请求对象
* @param dir
* 用于放置文件的文件夹名称
*/
public static void upload(HttpServletRequest req, String dir) {

// 生成磁盘(文件项)工厂(用于获得临时目录)
DiskFileItemFactory factory = new DiskFileItemFactory();
String path = req.getServletContext().getRealPath(dir);// 得到放置文件的真实路径
// 指定需要放置文件的真实目录,用于放置上传文件时所生成的.tem(临时)文件
factory.setRepository(new File(path));
// 设置读取文件时的缓存大小
factory.setSizeThreshold(1024 * 1024);
// 高水平的API文件上传处理
ServletFileUpload upload = new ServletFileUpload(factory);
try {
// FileItem 就是临时文件对象,每一个表单元素对应一个临时文件对象,分离文本表单和上传文件
List<FileItem> list = upload.parseRequest(req);
for (FileItem item : list) {
String propertyName = item.getFieldName();// 获取表单提交的属性名称

// item.isFormField() 判断临时文件是否就是一个普通的文本信息
if (!item.isFormField()) {
// 获取到上传文件的文件名
String itemName = item.getName();
// 找到文件名中.的位置
int index = itemName.lastIndexOf(".");
String suffix = itemName.substring(index);
// 自己处理文件的名称,格式按照: XXX.XX
String fileName = UUID.randomUUID().toString();
fileName += suffix;
// 将数据放入Request请求作用域,只是针对单次请求
req.setAttribute(propertyName, fileName);
// 从临时文件对象中读取字节流
item.getInputStream();
String filePath = path + "\\" + fileName;
File file = new File(filePath);
item.write(file);
} else {
String propertyValue = item.getString();
propertyValue = new String(
propertyValue.getBytes("ISO8859-1"), "utf-8");
// 将数据放入Request请求作用域,只是针对单次请求
req.setAttribute(propertyName, propertyValue);
}
}
} catch (Exception e) {
// TODO: handle exception
e.printStackTrace();
}

}
}

FileUploadTool

标签:

原文地址:http://www.cnblogs.com/VCandy/p/5475533.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!