這是第三次寫關于文件上傳的隨筆了,為了這文件上傳我也是醉了。廢話不多說,下面開說問題:
項目中有一個上傳文件的功能,好不容易把上傳功能寫完了,在本地運行沒有問題,以為文件沒有問題了,然后就開始把項目部署到服務器上運行,但是部署到服務器之后,其他的功能都沒有問題,但是提交帶有文件上傳的表單的時候就一直報錯,報什么錯呢?
No result defined for action最惡心的錯誤之一有木有?只有這樣的一句錯誤,別的什么都沒有,怎么下手解決都不知道,然后開始上網去搜解決辦法,以前也遇到過類似的問題,然后使用下面的方法解決了:
這是struts2的一個攔截器報的錯誤,當你的form中的數據有問題,比如說<input type="text" name="receiverLoginID" value="<%=name%>"/>當 name值為NULL時,就出這個錯了,所以你可以在當前頁面加入以下標簽<div style="color:red"> <s:fielderror /></div>它就會顯示攔截器的錯誤,并在struts的xml中對應action里加如<result name="input">/AddPRoducts.jsp</result>讓他把錯誤返回到該頁面就可以了
問題,但是結果就是上傳文件的問題。
使用<s:debug>標簽看到的問題是什么呢?.tmp文件的系統路徑找不到了。這是怎么回事呢?原來是上傳文件的時候,系統會生成一個臨時文件保存下來,然后在我的struts.xml文件中有一個存儲臨時文件的文件夾,
<!-- 臨時存放文件的路徑 --><constant name="struts.mult 但是剛開始我寫的是 <!-- 臨時存放文件的路徑 --><constant name="struts.multipart.saveDir" value="e:/test"></constant> 有人會說不就是把臨時文件的存儲路徑改了一下嗎?沒什么問題啊,可是關鍵是服務器上只有c盤,沒有E盤怎么破?上傳文件時候系統找不到存儲臨時文件的位置了,那么肯定要報錯的。以后這些東西還是需要多注意的,寫程序并不是簡單的完成功能就完事的,以后需要改進的地方還很多,繼續努力!!!
新聞熱點
疑難解答