| }
web.xml中加入
<servlet> <servlet-name>MultipartTestServlet</servlet-name> <servlet-class>com.bug.servlet.MultipartTestServlet</servlet-class> </servlet> <servlet> <servlet-name>MultipartTestServlet2</servlet-name> <servlet-class>com.bug.servlet.MultipartTestServlet2</servlet-class> </servlet> <servlet> <servlet-name>MultipartTestServlet3</servlet-name> <servlet-class>com.bug.servlet.MultipartTestServlet3</servlet-class> </servlet> <servlet-mapping> <servlet-name>MultipartTestServlet</servlet-name> <url-pattern>/MultipartTestServlet</url-pattern> </servlet-mapping> <servlet-mapping> <servlet-name>MultipartTestServlet2</servlet-name> <url-pattern>/MultipartTestServlet2</url-pattern> </servlet-mapping> <servlet-mapping> <servlet-name>MultipartTestServlet3</servlet-name> <url-pattern>/MultipartTestServlet3</url-pattern> </servlet-mapping>
问题1、中文问题: 三种凡是都可以通过自己的方法来设置encoding为gbk开处理和解决中文问题,包括初始化的时候传入gbk作为参数,或是是初始化后通过setEncoding的方式来实现。 另外ServletFileUpload方式也可以通过request.setCharacterEncoding("gbk");的方式来实现,而其它两种方式不支持这种方式。
问题2、文件大小限制 ServletFileUpload方式可以设置文件大小限制,也可以不用设置,例子中的upload.setSizeMax(2000000)就可以注释掉。如果设置upload.setSizeMax(-1),表明不限制上传的大小。文档中没有指明默认的限制的多少,我在不设置的情况下上传了一个9M的东西,可以上传,估计默认是不限制大小的。 而MultipartRequest方式和MultipartParser方式是必须设置文件的上传文件的大小限制的,如果不设置,默认是1M的大小限制。
问题3、文件上传发生错误 如果文件上传过程中发生任何错误,或者是文件的大小超出了范围,系统都将抛出错误。 ServletFileUpload方式在upload.parseRequest(request)时抛出错误 MultipartRequest方式在new MultipartRequest(。。。)时抛出错误 MultipartParser方式在new MultipartParser(。。。)时抛出错误
问题4、上传同名文件时,他们保存到临时目录是的冲突问题 ServletFileUpload方式,不会有冲突,系统会把上传得文件按照一定的规则重新命名,保证不会冲突 MultipartParser方式,会产生冲突,系统会把文件按照上传时的文件名,保存到临时目录下,如果两个用会同时上传文件名相同的文件,那么就可能会产生冲突,一方把另一方的临时文件给替换了。 MultipartRequest方式,在初始化时如果提供了一个名称转换策略,就不会有冲突,如果不提桶,就会有冲突。在上面的例子中我们提供了一个new DefaultFileRenamePolicy()保证了文件名不会有冲突发生。
问题5:表单中有两个同名的文件上传选择框,就像我们例子中的myfile一样,每个表单中有两个name=“myfile”的上传框 ServletFileUpload方式,可以处理,可以分别得到他们各自的文件, MultipartRequest方式,不可以处理,会发生冲突,会有一个上传框的文件覆盖了另外一个。 MultipartParser方式,可以处理,可以分别得到他们各自的文件,
备注: 代码比较乱,主要是为了说明他们间的区别。他们的详细地使用说明还是要参考他的javadoc和domo。
参考: 1、http://www.servlets.com/cos/#classes 2、http://jakarta.apache.org/commons/fileupload/apidocs/index.html 3、http://jakarta.apache.org/commons/fileupload/using.html 4、http://www.onjava.com/pub/a/onjava/2003/06/25/commons.html?page=3
上一页 [1] [2] |