JSP 文件上传下载系列之二[Commons fileUpload]
关于JSP 文件上传的基础和原理在系列一中有介绍到。 这里介绍一个很流行的组件commons fileupload,用来加速文件上传的开发。
官方的介绍是: 让添加强壮,高性能的文件到你的servlet和Web应用程序变得容易。
官方项目地址:
http://commons.apache.org/proper/commons-fileupload/
FileUpload分析request 里的数据, 生成一些独立的上传items. 每一个item都继承自 FileItem 这个接口。
1. 可以到 http://commons.apache.org/proper/commons-fileupload/download_fileupload.cgi 这个地址下载最新的版本。
2. 另外还需要下载 commons-io的 jar 包,下载地址:
http://commons.apache.org/proper/commons-fileupload/dependencies.html
在servlet 和portlet中都可以使用FileUpload, 以下以servlet的使用来介绍
首先,需要判断request 是否是文件上传的request.
系列一也有提,文件上传的form 必须设置成如下:
因此,创建的文件将不再被跟踪。特别是,它们将不再被自动删除。
与病毒扫描软件的问题
病毒扫描软件可能会导致FileUpload 的一些异常状况。
解决方式就是让扫描软件不要监视某些特定的目录。
查看上传进度
// Create a new file upload handlerServletFileUpload upload = new ServletFileUpload();// Parse the requestFileItemIterator iter = upload.getItemIterator(request);while (iter.hasNext()) { FileItemStream item = iter.next(); String name = item.getFieldName(); InputStream stream = item.openStream(); if (item.isFormField()) { System.out.println("Form field " + name + " with value " + Streams.asString(stream) + " detected."); } else { System.out.println("File field " + name + " with file name " + item.getName() + " detected."); // Process the input stream ... }}