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"。有時候一些自己不太注意的地方可能就會出現問題。

 

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