2012-10-25 68 views
0

我需要在我的服務器上存儲cad文件,但我無法使上傳正常工作。我試圖讓這個工作幾個小時,但我不能。 Atm我有這個。 這給了我,上傳servlet中的文件

隨機數 .temp不存在(java.io.FileNotFoundException: /home/nick/.netbeans/7.1.2/config/GF3_1/domain1/generated/jsp/lrt/upload_700679fb_13a96c78523__7ffb_00000006.tmp (No such file or directory)

package Admin; 

import java.io.IOexception; 
import java.io.InputStream; 
import java.io.PrintWriter; 
import java.util.Collection; 
import javax.servlet.ServletException; 
import javax.servlet.annotation.MultipartConfig; 
import javax.servlet.annotation.WebServlet; 
import javax.servlet.http.HttpServlet; 
import javax.servlet.http.HttpServletRequest; 
import javax.servlet.http.HttpServletResponse; 
import javax.servlet.http.Part; 

@WebServlet(name = "UploadServlet", urlPatterns = {"/UploadServlet"}) 
@MultipartConfig 
public class UploadServlet extends HttpServlet { 

    @Override 
    protected void doPost(HttpServletRequest request, 
     HttpServletResponse responst) throws ServletException, IOException { 
     Collection<Part> parts = request.getParts(); 
     if (parts.size() != 3) { 
     //can write error page saying all details are not entered 
     } 
     Part filePart = request.getPart("cad"); 
     InputStream sInputStream = filePart.getInputStream(); 
     //read imageInputStream 
     filePart.write(filePart.getName()); 
     //Read Name, String Type 
     Part namePart = request.getPart("cad"); 
     if(namePart.getSize() > 20){ 
      //write name cannot exceed 20 chars 
     } 
     //use nameInputStream if required   
     InputStream nameInputStream = namePart.getInputStream(); 
     //name , String type can also obtained using Request parameter 
     String nameParameter = request.getParameter("name"); 
     //Similarly can read age properties 
     Part agePart = request.getPart("age"); 
     int ageParameter = Integer.parseInt(request.getParameter("age")); 
    } 

    @Override 
    public String getServletInfo() { 
     return "Short description"; 
    } 
} 
+0

那麼您的註釋現在是怎樣的?該錯誤可能與'location'屬性有關。 – home

+0

@home我用完整的servlet編輯了我的代碼。 – Nick

回答

2

表示上傳文件的臨時文件中的錯誤無法被發現。

該路徑指示它存儲在NetBeans項目文件夾中的Glassfish工作文件夾中。也許Netbeans內部存在一些積極的清理/ hotdeploy,並且臨時文件過早被清除了?或者也許只有不足的寫權利?這取決於如何和在哪裏拋出異常的背景—這是不清楚你的問題。

首先,我建議告訴@MultipartConfig將臨時文件存儲在一個不同的,更永久和可寫的,location。例如,

@MultipartConfig(location="/var/webapp/temp")