2011-03-13 89 views
1

無法弄清楚爲什麼會一直創建2個文件夾?它會創建一個'0'文件夾,以及來自html的任何jobID。我想上傳文件在jobID文件夾中,而不是'0'文件夾。創建目錄問題

 int userID = 1; // test 
     String coverLetter = ""; 
     String status = "Review"; 
     int jobID = 0; 
     String directoryName = ""; 

     boolean isMultipart = ServletFileUpload.isMultipartContent(request); 
     if(isMultipart && request.getContentType() != null) 
     { 
      // Create a factory for disk-based file items 
      FileItemFactory factory = new DiskFileItemFactory(); 

      // Create a new file upload handler 
      ServletFileUpload upload = new ServletFileUpload(factory); 

      // Parse the request 
      List /* FileItem */ items = null; 
      try 
      { 
       items = upload.parseRequest(request); 
      } 
      catch(FileUploadException e) {} 

      // Process the uploaded items 
      Iterator iter = items.iterator(); 

      while(iter.hasNext()) 
      { 
       FileItem item = (FileItem)iter.next(); 

       if(item.isFormField()) 
       { 
        if(item.getFieldName().equals("coverLetter")) 
         coverLetter = item.getString(); 
        if(item.getFieldName().equals("jobID")) 
         jobID = Integer.parseInt(item.getString()); 
       } 

       directoryName = request.getRealPath("/") + "/Uploads/CV/" + jobID + "/";  

       File theDir = new File(directoryName); 
       if (!theDir.exists()) 
        theDir.mkdir(); 

       if(item.getFieldName().equals("file")) 
       { 
        File uploadedFile = new File(directoryName + item.getName()); 
        try 
        { 
         item.write(uploadedFile); 
        } 
        catch(Exception e) {} 
       } 
} 

編輯:

問題solved.I要上傳的文件

這是因爲它是在作業ID文件夾,而不是 '0' 的文件夾。

+0

程序流看起來很可疑。如果item.isFormField爲true,您將實例化作業ID爲'0'並將其設置爲一個值。你的程序是否在if塊內進行。可能它永遠不會進入isformfield = true塊。 – 2011-03-13 15:59:14

+0

如果您回答自己的問題,請將其作爲答案而不是編輯原始問題。如果每個人都這樣做,StackOverflow將是一個可怕的資源。 – 2011-03-13 18:52:44

回答

1

我懷疑這是不是真的:

item.getFieldName().equals("jobID")

這是一個有點困難,但猜測。您是否嘗試過在Eclipse(或類似的)中進行調試?添加一些記錄可能也有幫助。

+0

它確實 - 我做了system.out.println,我得到了2個值。 :S – James 2011-03-13 15:43:15

+0

兩種情況都是如此嗎?什麼尺寸是物品? – rich 2011-03-13 15:45:56

+0

物品超過1,因爲我剛剛發現,它通過我的形式循環..有2種形式 – James 2011-03-13 16:13:26

0

嘗試打印/下面的行之前記錄的jobID

directoryName = request.getRealPath("/") + "/Uploads/CV/" + jobID + "/";

1

必須有2項從請求解析,那麼也許您發送2個上傳項目。

的第一個項目不具備作業ID字段名這樣的目錄名稱保持

.../Uploads/CV/0 

因此多數民衆贊成,這是造成問題的時間。

第二項確實有作業ID,因此目錄被正確創建。

你可以發佈表單,以便我們可以看到,它可能是那裏的東西。求職信是沒有jobId的附加文件嗎?

如果jobID存在,您可以通過僅創建dir來解決它。