今天做了一下java的简单的文件上传,使用的是commons-fileupload-1.3.1.jar。依赖于commons-io-2.4.jar。所以在导入包的时候也需要导入这个commons-io-2.4.jar。至于版本之间的关系,我并没有好好的去看,我使用的这两个还是很很友好合作的。
使用这两个包来上传文件到服务器端,是比较简单的。大致的就分为两个部分,一个是html页面部分的设置,一个是servlet部分的代码。
html页面
1
2
3
4
FileUpload parses HTTP requests which conform to RFC 1867, "Form-based File Upload in HTML". That is, if an HTTP request is submitted using the POST method, and with a content type of "multipart/form-data", then FileUpload can parse that request, and make the results available in a manner easily used by the caller.
这个是Apache 官网上的一句话,给出了这样的form表单的设置的要求。
然后是servlet页面,我将最简单的代码部分给出,没有任何的设置,没有文件上传的大小的限制,就写了个最简单的能够完成上传的代码,如果有需要设置的话,可以自己查一下。
1 DiskFileItemFactory disk=newDiskFileItemFactory();2 ServletFileUpload upload=newServletFileUpload(disk);3 List list=upload.parseRequest(request);4 Iterator iterator=list.iterator();5 while(iterator.hasNext()){6 FileItem item=(FileItem)iterator.next();7 FileName=item.getName();8 Path="d:\\"+FileName;9 item.write(newFile(Path));10 }
这个我给定的是一个指定的存储位置,当然,可以获得服务器当前的位置,然后在服务器端新建一个文件夹用来存放相应的文件。
通过这样的几句代码,就可以完成文件的上传,而且,当上传多个文件的时候,只在html页面增加类型为file的input标签,服务器端servlet可以不用增加任何代码。
之后将增加一个progress lisetener 用来监听上传的进度。
end