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"。有时候一些自己不太注意的地方可能就会出现问题。

 

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