关于struts文件上传遇到只有文件值没有接收到以及文件消失的解决方案
2015-11-03 16:00
316 查看
昨天我在进行struts文件上传的时候困扰了一晚上,让我很郁闷,就是说:一旦开始文件上传的时候就遇见报struts.xml文件的配置错误,这就让我很是郁闷,struts的配置文件命名就没有错误,为什么会报错呢,于是我就上网去查,试过了很多方法,发现都不能解决问题,弄了一晚上也没有弄出来,最后在无意中发现原来是struts的注入规范问题。
在传统的servlet会通过servlet来获取参数值,但是在struts22里面就不一样了,是要依赖注入的,就是说会把文件数据放到对应的规定好的对象成员变量里面,注意,我已经说了,是规定好的,就是说,这个成员变量的名称不绝对不能随便改变的,一般来说会有如下的规范:
文件本身:表单中的名称; 这个我就遇到了问题,导致取出的是无效值
文件的名称:表单中的名称+FileName
文件的类型:表单中的名称+ContentType;
这个过程中一般是不会犯错误的,但是会无意中引错包,这样就导致了看着代码似乎没有说明问题,但是实际上是不可行的。如果不知道这个问题,是很难通过其他方法发现或者解决的
解决的方法也非常的容易,那就是把已经引入的包全部删掉,全部使用IO包。这样就不会出现错误
另外当struts把所有的属性都注入进来之后,就可以进行文件传输了,文件传输可以使用最底层的IO流操作,也可以使用自带jar集成的方法来实现文件上传
FileUtils.copyFile(源值, 目标值);
另外还有注意的是如果把文件放在应用的目录下那么就会发生重启tomcat的时候上传的文件消失的情况,那么取决的方法就是把文件最好放到tomcat的目录之外,而且安全高效。
在传统的servlet会通过servlet来获取参数值,但是在struts22里面就不一样了,是要依赖注入的,就是说会把文件数据放到对应的规定好的对象成员变量里面,注意,我已经说了,是规定好的,就是说,这个成员变量的名称不绝对不能随便改变的,一般来说会有如下的规范:
文件本身:表单中的名称; 这个我就遇到了问题,导致取出的是无效值
文件的名称:表单中的名称+FileName
文件的类型:表单中的名称+ContentType;
这个过程中一般是不会犯错误的,但是会无意中引错包,这样就导致了看着代码似乎没有说明问题,但是实际上是不可行的。如果不知道这个问题,是很难通过其他方法发现或者解决的
解决的方法也非常的容易,那就是把已经引入的包全部删掉,全部使用IO包。这样就不会出现错误
另外当struts把所有的属性都注入进来之后,就可以进行文件传输了,文件传输可以使用最底层的IO流操作,也可以使用自带jar集成的方法来实现文件上传
FileUtils.copyFile(源值, 目标值);
另外还有注意的是如果把文件放在应用的目录下那么就会发生重启tomcat的时候上传的文件消失的情况,那么取决的方法就是把文件最好放到tomcat的目录之外,而且安全高效。
相关文章推荐
- Jackson 框架,轻易实现JAVA对象和JSON串互转
- java复习:其他常用类
- java.lang.ClassCastException:
- Java——采用filter统一设置字符集
- 简单的Ajax表单验证
- 数论——水仙花数问题(Java实现)
- struts---action和页面间互相传值
- 在Eclipse的SDK Manager中下载SDK
- Java半角全角文字转换
- eclipse 以往版本
- java多态性
- JAVA中int、String的类型转换
- C中^和Java中^的不同
- Java的入门知识和准备步骤
- java list 根据对象的一个属性排序
- java socket 数据长度 最大
- JAVA MAIL发送邮件实例
- Eclipse maven android开发指南
- Java代码性能优化
- java基础复习02