問題描述 我在Eclipse上運行項目的時候,在我用fileUpload上傳圖片,等到下一次Tomcat刷新的時候,這個照片就沒了,而且點擊查看那個文件夾也查看不到有圖片文件。 原因 我後來在網上查詢相關資料發現是Eclipse整 合Tomcat的問題,因為他們整合之後,你用相對路徑上傳的圖片會 ...
問題描述
我在Eclipse上運行項目的時候,在我用fileUpload上傳圖片,等到下一次Tomcat刷新的時候,這個照片就沒了,而且點擊查看那個文件夾也查看不到有圖片文件。
原因
我後來在網上查詢相關資料發現是Eclipse整
合Tomcat的問題,因為他們整合之後,你用相對路徑上傳的圖片會上傳到Tomcat伺服器上面。但Eclipse的每一次項目代碼的編譯更新(熱部署)或者重啟Tomcat伺服器,Tomcat伺服器會把之前的項目文件刪除, 並且隨時保持於eclipse中項目的同步。所以圖片上傳之後一會兒就會消失。
解決方法1
不用相對路徑,使用絕對路徑。這樣文件上傳的地方就會是在本機的項目裡面了,而Tomcat同步更新也不會有問題。
String fname = fi.getName();
String[] str = fname.split("\\.");
String name = UUID.randomUUID().toString()+"."+str[str.length-1];
String filePath = "E:\\Java\\Web\\yueyouwang\\src\\main\\webapp\\tupian\\";//創建一個存放上傳文件的目錄
b.setFengmian("tupian/"+name);
fi.write(new File(filePath,name));
fi.delete();
但這個方法有一定的缺陷性,你每次上傳了一個新的圖片之後,你直接在網頁查看不了,你要到Eclipse的那個文件夾滑鼠右鍵點擊刷新之後,才能在網頁上看到你上傳的圖片。
解決方法2
因為這是Tomcat伺服器與Eclipse同步的問題。所以,我將項目打成war包再放到Tomcat伺服器下運行就沒問題了。