使用浏览器进行文件上传时,是使用multipart/form-data编码,然而Servlet容器并不会自动帮我们处理编码,而必须由程序设计人员
自行处理,在这个部份,我们可以使用Oreilly所提供的上传包MultiPartRequest,您可以至以下的网址下载,文件是cos-
05Nov2002.zip: http://www.servlets.com/cos/index.html
解开zip文件之后,在lib目录下可以找到cos.jar,将它复制至您的Web应用程序的WEB-INF/lib下就可以了,基本上, Oreilly的MultiPartRequest相当的容易使用,它可以同时处理多个文件的上传,并且提供多个方法可以让您取得上传文件的相关信息。 这边提供一个简单的例子,首先撰写上传的表单:
<html> 这边示范两个文件的上传,表单的enctype必须设定为multipart/form-data,而上传方法是post,表单组件的输入类型是 file,当然,上传的文件数在实际应用时,是可以用JavaScript等方法来动态进行选择的。 上传的动作处理,撰写在upload.jsp中:
<%@page import="com.oreilly.servlet.MultipartRequest" %> 注意到程序中import了com.oreilly.servlet.MultipartRequest, MultipartRequest可以限制文件上传的大小,最后一个参数是上传文件名称的编码,如果不设定的话,默认是ISO-8859-1,为了支持繁 体中文档名,程序中设定为MS950,如果要支持简体中文档名,可以设定为GB2312。 基本上您只要建立MultipartRequest对象就完成了文件上传的处理动作,如果要额外取得文件信息,您可以从 MultipartRequest对象取得,例如getFileNames()、getContentType()、getFile()等等, getFileNames()所取得的是Enumeration类型之对象,可以这么使用: Enumeration filenames = multi.getFileNames();
while(filenames.hasMoreElements()) { String filename = (String) filenames.nextElement(); out.println("上传了文件" + filename + "<br>"); } 其它有关于MultipartRequest的说明,您可以引用下载的zip档中之api说明。 |