文件上传之 commons-fileupload(一)
来源:互联网 发布:淘宝小样几乎都是假的 编辑:程序博客网 时间:2024/06/08 10:41
二、介绍下
1、检测request中是否包含有multipart内容(isMultipartContent(request)是它的一个静态方法)
ServletFileUpload.isMultipartContent(request)
2、如果有,生成DiskFileItemFactory工厂将进行相关的设置(不知道的情况下也可以不设置)
4096);// DiskFileItemFactory factory = new DiskFileItemFactory();
// maximum size that will be stored in memory
factory.setSizeThreshold( 设置缓冲区大小,这里是4kb
// Location to save data that is larger than maxMemSize.
factory.setRepository(new File("d:/"));// 设置临时目录
.setHeaderEncoding("UTF-8");//设置字符集 factory 防止中文文件名乱码
3、生成上传ServletFileUpload类,并将DiskFileFactory工厂传给它,并对ServletFileUpload进行配置
// Create a new file upload handler
ServletFileUpload upload = new ServletFileUpload(factory);
upload.setFileSizeMax(3*1024*1024);//设置上传文件大小3M
upload.setSizeMax(6*1024*1024);//设置请求总文件大小6M
4、从request得到上传的文件列表,并获得其迭代器
// Parse the request to get file items.
List<FileItem> fileItems = upload.parseRequest(request);
// Process the uploaded file items
Iterator i = fileItems.iterator();
5、处理文件:写入或者其他操作
while (i.hasNext()) {
FileItem fi = (FileItem) i.next();
if (fi.isFormField()) {//当是表单域时,进行的处理
// Get the uploaded file parameters
String fieldName = fi.getFieldName();//得到元素的name属性的值
String fieldValue=fi.getString("utf-8");//得到元素的value的值
String fileName = fi.getName();//这里是表单域,所以得到的是null
} else {//当是文件域时,将文件保存到硬盘中
String basePath = request.getRealPath("/upload");
String contentType = fi.getContentType();
boolean isInMemory = fi.isInMemory();
long sizeInBytes = fi.getSize();
String fieldName = fi.getFieldName();//得到元素的name属
String fileName = fi.getName();//取得上传的文件名
file = new File(basePath+"/"+filename);
fi.write(file);
}
out.println("Uploaded Filename: " + fileName + "<br>");
}
} }
说明:
FileItem接口是对用户上传文件的封装
DiskFileItemFactory 实现了FileItemFactory接口,主要方法有public FileItem createItem(String fieldName, String contentType, boolean isFormField, String fileName)
ServletFileUpload从FileUpload继承,而FileUpload又从FileUploadBase继承,功能:分析传入的request对象、得到文件列表FileItemIterator……
- 文件上传之 commons-fileupload(一)
- 文件上传之 commons-fileupload(一)
- 文件上传之 commons-fileupload(二)
- 文件上传之 commons-fileupload(二)
- 文件上传之Apache commons fileupload使用
- 文件上传之Apache commons fileupload使用
- 文件上传之Apache commons fileupload使用
- 文件上传之Apache commons fileupload使用
- 文件上传 commons-FileUpload
- Commons FileUpload上传文件
- Commons FileUpload上传文件
- commons-fileupload-文件上传
- commons fileupload 文件上传
- commons-fileupload上传文件
- 文件上传 commons-fileupload
- commons-fileupload 文件上传问题
- commons fileupload 文件上传应用
- Commons-fileupload 文件的上传
- JDBC深度封装的工具类 (具有高度可重用性)
- codeforces 401A - Vanya and Cards
- 文件上传之 MultipartFile
- 关于C# 中的结构
- 芯片间的互连标准: HSIC, UniPro, HSI, C2C, LLI
- 文件上传之 commons-fileupload(一)
- 工作要义
- CareerCup Given an array having positive integers, find a subarray which adds to a given number
- vs2005无法设置断点
- org.hibernate.exception.GenericJDBCException: 只进结果集不支持请求的操作。 异常处理方法
- sicily 1934. 移动小球
- 文件上传之 commons-fileupload(二)
- javascript——js string 转 int
- JAVA工具类 UUID