2015-10-18 49 views
-1

我只是想用JSP中的表單上傳圖像,因爲我已經編寫了一個代碼,按照下面的代碼,它沒有插入到while循環中。生成的圖像沒有上傳到目錄中。圖像沒有上傳到使用JSP的目錄中

你能幫忙解決問題嗎?

HTML代碼

<html> 
<head><title>Upload page</title></head></p> <p><body> 
<form action="upload_jsp.jsp" method="post" enctype="multipart/form-data" name="form1" id="form1"> 
    <center> 
    <table border="2"> 
     <tr> 
      <td align="center"><b>Multipale file Uploade</td> 
     </tr> 
     <tr> 
      <td> 
       Specify file: <input name="file" type="file" id="file"> 
      <td> 
     </tr> 
     <tr> 
      <td> 
      Specify file:<input name="file" type="file" id="file"> 
      </td> 
     <tr> 
      <td> 
       Specify file:<input name="file" type="file" id="file"> 
      </td> 
     </tr> 
     <tr> 
      <td align="center"> 
       <input type="submit" name="Submit" value="Submit files"/> 
      </td> 
     </tr> 
    </table> 
    <center> 
</form> 
</body> 
</html> 

JSP代碼

<%@ page import="java.util.List"%> 
<%@ page import="java.util.Iterator"%> 
<%@ page import="java.util.ResourceBundle" %> 
<%@ page import="java.io.File"%> 
<%@ page import="org.apache.commons.fileupload.servlet.ServletFileUpload"%> 
<%@ page import="org.apache.commons.fileupload.disk.DiskFileItemFactory"%> 
<%@ page import="org.apache.commons.fileupload.*"%> 

<%   
      String path= "C:\\Users\\gur29175\\Desktop" ;   
boolean isMultipart = ServletFileUpload.isMultipartContent(request); 
if (!isMultipart) { 
} else { 
    String directory=""; 
      FileItemFactory factory = new DiskFileItemFactory(); 
      ServletFileUpload upload = new ServletFileUpload(factory); 
      List items = null; 
      try { 
        items = upload.parseRequest(request);    
      } catch (FileUploadException e) { 
        e.printStackTrace();    
      } 
      Iterator itr = items.iterator(); 

      while (itr.hasNext()) { 

      FileItem item = (FileItem) itr.next(); 
      if (item.isFormField()) { 
      } else { 
        try { 
      String itemName = item.getName(); 
      File savedFile = new File(path+itemName);  
       //File savedFile = new File("C:\\Users\\sagar\\Desktop\\JAVA Training\\code(1)\\test\\WebContent\\WEB-INF\\uploads\\"+itemName);  
      //File savedFile = new File(config.getServletContext().getRealPath("/")+"uploadedFiles/"+itemName); 
          item.write(savedFile);  

//out.println("<tr><td><b>Your file has been saved at the loaction:</b></td></tr><tr><td><b>"+config.getServletContext().getRealPath 
//("/")+"uploadedFiles"+"\\"+itemName+"</td></tr>"); 
out.println("<tr><td><b>Your file has been saved at the loaction:</b></td></tr><tr><td><b>"+path+ 
("/")+"uploadedFiles"+"\\"+itemName+"</td></tr>"); 
        } catch (Exception e) { 
          e.printStackTrace(); 
        } 
      } 
      } 
    } 
    %> 
+0

你的錯誤是什麼?你有什麼異常? – Ish

+0

奇怪的是...我沒有收到任何錯誤...但是沒有任何東西被加載到目錄中 –

+0

我實際上已經嘗試過對你的代碼進行了一些修改 - 請參閱我的答案,它在我的最後工作。 – Ish

回答

0

這可能是有問題的,因爲item.getName()將返回完整路徑的代碼行的源文件位於。這可能會導致格式錯誤的文件路徑。

嘗試更換:

String itemName = item.getName(); 

有:

String itemName = FilenameUtils.getName(item.getName()); 

確保FilenameUtils輸入:

<%@ page import="org.apache.commons.io.FilenameUtils" %> 

,你有公地io.jar在Web應用程序庫。

+0

不工作...同樣沒有上傳 –

+0

你做了什麼調試工作? DId你把一些日誌記錄,並確定它在你的代碼中經歷了多少? – Ish

+0

奇怪的是...我沒有收到任何錯誤...但是沒有任何東西被加載到目錄..itr.hasNext()中)是因爲false ...這就是爲什麼它不會進入while循環。 –

相關問題