java中文件上传的Bug

文件上传,有两种方式,一种是自己解析文件流,一种是借助struct2中自带的拦截器对文件进行解析

自己解析流文件:利用 commons-io-1.4.jar和commons-fileupload-1.2.1.jar来进行解析,相关的事项如下:
1.浏览器端注意事项
     1.请求方式必须是 post
     2.需要使用组件<inputtype="file" name="f"> 组件必须有名称
     3.表单必须设置encType="multipart/form-data"
 2.服务器端处理
     通过request对象,获取InputStream,可以将浏览器提交的所有数据读取到.  
 3.入门案例分析
     在浏览器端创建一个可以上传文件的表单,在服务器端通过commons-fileupload完成文件上传。
          浏览器端注意三件事情:
                         1.表单的method=post
                         2.设置encType=multipart/form-date
                         3.使用具甩name属性的file元素
         在服务器端
              1.创建DiskFileItemFactory
                         2.创建ServletFileUpload
                         3.通过ServletFileUpload的parseRequest方法得到所有的FileItem 
 struct2中自带的拦截器对文件进行解析:
 这个原理同上,只是不可以用上述的 ServletFileUpload来获取FileItem ,因为struts2自2.0以后的版本,会拦截文件流,所以无法使用该方法来进行文件上传,必须使用struts2中自带的方法对文件进行读取,这也是这一次文件上传案例中的bug.

原文地址:https://www.cnblogs.com/codedoge/p/9209146.html