2014-12-02 35 views
1

我正在嘗試文件上傳功能,該功能似乎正常工作,因爲該文件出現在C:/ xampp/tomcat/temp文件夾中。但是,響應返回爲以下錯誤:使用java servlet訪問HTML 5文件的上傳被拒絕異常

java.io.FileNotFoundException: C:\xampp\tomcat\temp (Access is denied) java.io.FileNotFoundException: C:\xampp\tomcat\temp (Access is denied) 
The server encountered an internal error that prevented it from fulfilling this request. 
java.io.IOException: java.io.FileNotFoundException: C:\xampp\tomcat\temp (Access is denied) 


Main.FileUpload.doPost(FileUpload.java:50) 
    javax.servlet.http.HttpServlet.service(HttpServlet.java:647) 
    javax.servlet.http.HttpServlet.service(HttpServlet.java:728) 
root causejava.io.FileNotFoundException: C:\xampp\tomcat\temp (Access is denied) 
    java.io.FileOutputStream.open(Native Method) 
    java.io.FileOutputStream.<init>(Unknown Source) 
    java.io.FileOutputStream.<init>(Unknown Source) 
    org.apache.tomcat.util.http.fileupload.disk.DiskFileItem.write(DiskFileItem.java:391) 
    Main.FileUpload.doPost(FileUpload.java:50) 
    javax.servlet.http.HttpServlet.service(HttpServlet.java:647) 
    javax.servlet.http.HttpServlet.service(HttpServlet.java:728) 

如果有什麼問題該怎麼辦?

+0

你檢查文件夾的權限?你有沒有試圖用適當的權限在那裏創建一個文件夾? – PbxMan 2014-12-02 15:09:37

+0

權限是完全訪問,因爲我是管理員(這一切都發生在我的電腦上) – 2014-12-02 15:12:38

回答

1

我認爲你的問題是寫入文件系統時沒有指定文件名。
你應該這樣做:

String uploadPath = "C:\xampp\tomcat\temp"; 
FileItem item; 
.... 

String fileName = new File(item.getName()).getName(); 
String filePath = uploadPath + File.separator + fileName; 
File storeFile = new File(filePath); 
item.write(storeFile); 

我希望這幫助。

+0

這就是我正在做的。出於某種原因,它只是停止給我例外。我甚至不確定我做了什麼。 – 2014-12-02 20:57:28

+0

@DarbininkaiBroliai驗證文件名已正確添加到路徑中,在存儲之前記錄或打印完整路徑。 – 2014-12-02 23:15:18

+0

自從過去2天以來,您可以從這個錯誤中拯救我。非常感謝。上帝祝福你。 – Cataclysm 2017-03-09 04:10:04

0

試試這個我希望它能幫到你。如果你有不同的用例說明。我會盡量

if (ServletFileUpload.isMultipartContent(request)) { 
 
       try { 
 
        List<FileItem> multipart = new ServletFileUpload(new DiskFileItemFactory()).parseRequest(request); 
 
        for (FileItem item : multipart) { 
 
         if (!item.isFormField()) { 
 
          filename = new File(item.getName()).getName(); 
 
          folder = getServletContext().getRealPath("/") + "subfolders/";       
 
          File file = new File(folder); 
 
          if (!file.exists()) { 
 
           file.mkdirs();                 
 
           
 
          } 
 
          item.write(new File(folder + "/" + filename)); 
 
      } 
 
}

相關問題