2013-07-18 106 views
1

我上傳的服務器位置的文件everytime..but後的某個時間或次日該位置是從我的system.so缺少我收到始終未找到錯誤文件例外..上傳的文件丟失

這裏是我的代碼

 String fileName = file.getFileName().trim(); 
      if(!("").equals(fileName)){ 
       long timeStamp = com.mysql.jdbc.Util.getCurrentTimeNanosOrMillis(); 
       String fileExtension = fileName.substring(fileName.lastIndexOf("."));    
       fileName = fileName.substring(0,fileName.lastIndexOf("."));    
       String newFileName = fileName.concat("-").concat(String.valueOf(timeStamp)).concat(fileExtension); 
       String foldercreated = folder + "\\" + newFileName; 
       dto.setReplyDocName(newFileName); 
       fos = new FileOutputStream(foldercreated); 
       fos.write(file.getFileData()); 
       dto.setReplyDocLocation(foldercreated); 
       fos.flush(); 
       fos.close(); 

     } 
+0

「location is missing」< - 這是什麼意思?給出上述代碼失敗的場景。另外,如果您使用Java 7,請使用java.nio.file。* – fge

+0

什麼操作系統?你要保存哪個文件夾?如果它是一個臨時文件夾,操作系統可能會定期清除它。 –

+0

@NickWilson是...在臨時文件夾中.E:\ PRG \ .metadata \ .plugins \ org.eclipse.wst.server.core \ tmp0 \ wtpwebapps \ – Haseena

回答

2

您正在將上傳的文件存儲在Eclipse用來部署webapp的臨時目錄中。因此,每次部署webapp時,該目錄都將被清除。

上傳的文件不應該存儲在那裏。配置存儲文件的絕對路徑(如c:\uploaded_files),並將文件存儲在此目錄中。

0

要存儲,您可以創建你的web應用中一個新的文件夾,上傳的文件,然後你可以使用此位置爲:

File file=new File(session.getServletContext().getRealPath("/Your_Location")); 

或者你可以使用任何絕對位置。

+0

這將導致OP正在試圖避免的問題:每次重新部署webapp將刪除上傳的文件。上傳的文件是數據。它們與webapp的代碼無關。而且,如果應用程序被部署爲未爆炸的戰爭文件,它將不起作用。 –