关于struts文件上传遇到只有文件值没有接收到以及文件消失的解决方案

昨天我在进行struts文件上传的时候困扰了一晚上,让我很郁闷,就是说:一旦开始文件上传的时候就遇见报struts.xml文件的配置错误,这就让我很是郁闷,struts的配置文件命名就没有错误,为什么会报错呢,于是我就上网去查,试过了很多方法,发现都不能解决问题,弄了一晚上也没有弄出来,最后在无意中发现原来是struts的注入规范问题。

在传统的servlet会通过servlet来获取参数值,但是在struts22里面就不一样了,是要依赖注入的,就是说会把文件数据放到对应的规定好的对象成员变量里面,注意,我已经说了,是规定好的,就是说,这个成员变量的名称不绝对不能随便改变的,一般来说会有如下的规范:

文件本身:表单中的名称; 这个我就遇到了问题,导致取出的是无效值

文件的名称:表单中的名称+FileName

文件的类型:表单中的名称+ContentType;

这个过程中一般是不会犯错误的,但是会无意中引错包,这样就导致了看着代码似乎没有说明问题,但是实际上是不可行的。如果不知道这个问题,是很难通过其他方法发现或者解决的

解决的方法也非常的容易,那就是把已经引入的包全部删掉,全部使用IO包。这样就不会出现错误


另外当struts把所有的属性都注入进来之后,就可以进行文件传输了,文件传输可以使用最底层的IO流操作,也可以使用自带jar集成的方法来实现文件上传

FileUtils.copyFile(源值, 目标值);


另外还有注意的是如果把文件放在应用的目录下那么就会发生重启tomcat的时候上传的文件消失的情况,那么取决的方法就是把文件最好放到tomcat的目录之外,而且安全高效。



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章