該內容網上有很多相關搜索,但是都未能解決我的問題。
最後還是自己動手豐衣足食了
首先,建立前臺頁面,這個建議根據GWT官方API上給出的例子編寫。
需要注意的是
form.setAction("/myFormHandler");
最好寫成setAction(GWT.getModuleBaseURL + "/myFormHandler")
再就是Servlet的編寫了,網上很多利用commons-fileupload庫的方法,這裏就不多說了
最後,需要注意的是,配置文件web.xml。比如上面的action的配置,假設你的網絡應用爲aaa,那麼需要在web.xml文件中添加
<servlet>
<servlet-name>fileUploadServlet</servlet-name>
<servlet-class>aaa.server.FileUploadImpl</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>fileUploadServlet</servlet-name>
<url-pattern>/aaa/myFormHandler</url-pattern>
</servlet-mapping>
這樣,便可以正常上傳文件了。
PS:文件上傳之後的處理還真是要注意下,不同的瀏覽器上傳之後的文件名居然不一樣,我用chrome測試上傳之後,到servlet就只是一個文件名,而不是全路徑;而使用IE上傳之後,居然是全路徑。原來只寫了一種,當然可想而知,肯定出錯啊。呵呵,學習了,今後還要注意下瀏覽器兼容的問題。
還有,就是不同操作系統中路徑分隔符的問題,原來都是使用
"\\"
這種形式,也知道這樣不好,應該使用File.seperator來表示,但是由於一直沒有出問題所以在windows上也沒有改過。可是,今天做了一次應用的遷移,是從windows上移到linux下的。當然,又出錯了。。。然後又改源碼,真是鬱悶。
還有,我在使用File.pathSeperator的時候,怎麼變成 ";"了,搞了半天弄明白了,
File.pathSeperator中的path指的是環境變量PATH,而在windows下PATH的分隔符當然是;了,如果在linux下運行,應該就是 :