Struts2文件上传无法取得文件名及文件类型问题的解决

     最近写一网站,用struts2加Common-FileUpload实现照片上传,在页面表单里写成这样:<s:file name="uploadPhoto"/>,然后在action中用以下三个属性:

    private File uploadPhoto;//封装上传文件
    private String uploadFileName;//设置上传文件的文件名
    private String uploadContentType;//上传文件的类型

来接收文件的信息。测试的过程中,发现uploadPhoto属性可以接收到文件内容,然而uploadFileName和uploadContentType这两个属性接不到文件名和文件类型信息,值始终为null。

    在网上搜了很多资料,费了好大劲也没找到解决方法。是不是我的struts2出了问题呢,我干脆试试书上的源代码看行不行,于是拿出李刚老师的《Struts2 权威指南》,用书的示例代码一试,没有问题。这就奇怪了,把那示例代码跟我的代码以及配置文件进行多次比较,没有发现实质性差别。于是一点一点改变着试吧,把示例代码的页面跟我的action组合起来,一运行,没有问题,说明问题出在页面上。用我的页面,把表单的代码换成示例代码上的,也没有问题。我的表单跟示例代码的表单差别也只剩下我的是name="uploadPhoto",示例代码上是name="upload",于是将我的也改成“upload”(action里的uploadPhoto也改成upload),一试,成功了!

    我用的主要组件版本:commons-io-1.3.2,commons-fileupload-1.2.1,struts2-core-2.1.6。

    总结一下,目前版本的struts2文件上传表单里的<s:file name="upload"/>的name必须为"upload"。有时候一些自己不太注意的地方可能就会出现问题。

 

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 10
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 10
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值