您的位置:首页 > 编程语言 > Java开发

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

2009-02-27 12:38 603 查看
最近写一网站,用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"。有时候一些自己不太注意的地方可能就会出现问题。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: