2015-04-02 15 views
0

我面臨的問題是在使用表格enctype="multipart/form-data"時在我的數據庫中插入圖像我曾嘗試使用Part類,但只返回名稱圖像,而我想要的圖像的絕對路徑。我也用下面的代碼當窗體有enctype時,無法在數據庫中插入圖像=「multipart/form-data

try { 
    List<FileItem> items = new ServletFileUpload(new DiskFileItemFactory()).parseRequest(request); 
    for (FileItem item : items) { 
     if (item.isFormField()) { 
      // Process regular form field (input type="text|radio|checkbox|etc", select, etc). 
      if(item.getFieldName().equals("txtPrdModel")){ 
       String ProductModel = item.getString(); 
      } 

      // ... (do your job here) 
     } else { 
      // Process form file field (input type="file"). 
      String fieldName = item.getFieldName(); 
      String fileName = FilenameUtils.getName(item.getString()); 
      InputStream fileContent = item.getInputStream(); 
      // ... (do your job here) 
     } 
    } 

此代碼獲取fieldNamegetString不返回任何值嘗試。 我需要使用enctype="multipart/form-data"和需要的我試圖上傳的文件的絕對路徑。

我使用netbeans 8.0.2和servlet版本是3.1。

回答

1

出於安全原因,文件的絕對路徑不作爲文件名的一部分發送。您只能知道上傳到服務器的文件的當前名稱,因此嘗試獲取文件在客戶端上的絕對路徑是徒勞的。

獲得文件名及其二進制數據後,請使用此信息將其存儲在文件的特定路徑中,數據庫中或您正在使用的其他數據源中。

+0

是否有任何其他方式可以獲取文件的絕對路徑。由於我的插入存儲過程是以這種方式寫入的,因此它需要處理圖像的完整路徑。 – 2015-04-02 04:43:08

+0

@ user_19240589您應該設置服務器的絕對路徑,而不是客戶端的絕對路徑。再次說明:**您無法從客戶端**獲取絕對路徑。我會建議重新設計存儲過程。 – 2015-04-02 04:43:57