FileUpload文件上传组件:
官方下载: http://commons.apache.org/fileupload/ ?
?
官方使用说明: http://commons.apache.org/fileupload/using.html
?
以下是个人的简单使用:
判断是否有上传请求:
?
if (ServletFileUpload.isMultipartContent(request))
?
开始时的一般设置:
?
//建立文件工厂 DiskFileItemFactory diskFileItemFactory = new DiskFileItemFactory(); //建立文件处理 ServletFileUpload servletFileUpload = new ServletFileUpload(diskFileItemFactory); //设置上传文件的最大容量 servletFileUpload.setFileSizeMax (maxSize); //设置最大内存容量 diskFileItemFactory.setSizeThreshold (maxSize);?
?
处理文件:
?
//获取文件项List List items = servletFileUpload.parseRequest(request); //建立文件项的迭代器 Iterator iter = items.iterator(); //循环文件项 while( iter.hasNext()){ FileItem item = (FileItem) iter.next() ; //判断是否为表单域,false则是file文件 if (!item.isFormField()) { //取文件的各个属性,详细的请看官方说明 String fileName = item.getName(); } }?
?
以上的List
items = servletFileUpload.parseRequest(request); 很多人都说取不了,我也遇过
如果只是要文件输入流即可,可试一下以下方法:
?
FileItemStream fileItemStream = null; FileItemIterator fileItemIterator; try { //取文件项迭代器 fileItemIterator = servletFileUpload.getItemIterator(request); //取下一个文件项的文件流,返回值是FileItemStream } catch (FileUploadException ex) { Logger.getLogger(TemplateUploadServlet.class.getName()).log(Level.SEVERE, null, ex); } //用文件流判定是否为文件 if (!fileItemStream.isFormField()){ //取个属性 String fileName = fileItemStream.getName(); //取文件输入流 InputStream uploadStream = fileItemStream.openStream(); }?
?
还有很多的基本请看官方使用说明。