2015-02-08 70 views
0

我已經用jsp編寫了一個程序來上傳一個文件夾,這個文件夾叫做webcontent裏面創建的圖片,但是我的文件沒有上傳。請需要一些幫助。如何使用multipart/form-data在服務器上載文件?

<form action="upload_images_result.jsp" method="post"> 
    <div align="left"> 
     Select a file: <input type="file" name="file" size="50" 
      enctype="multipart/form-data" placeholder="Upload Your Image" /> 
    </div> 
    <br> 
    <div> 
     <input type="submit" value="Upload File" /> 
    </div> 
</form> 

upload_images_result.jsp

<% 
File file; 
int maxFileSize = 5000 * 1024; 
int maxMemSize = 5000 * 1024; 
//ServletContext context = pageContext.getServletContext(); 
String filePath = "D:\\Students_Server\\WebContent\\Images"; 
// Verify the content type 
String contentType = request.getContentType(); 
if ((contentType.indexOf("multipart/form-data") >= 0)) { 

    DiskFileItemFactory factory = new DiskFileItemFactory(); 
    // maximum size that will be stored in memory 
    factory.setSizeThreshold(maxMemSize); 
    // Location to save data that is larger than maxMemSize. 
    factory.setRepository(new File(    
    filePath ")); 
    // Create a new file upload handler 
    ServletFileUpload upload = new ServletFileUpload(factory); 
    // maximum file size to be uploaded. 
    upload.setSizeMax(maxFileSize); 
    try { 
     // Parse the request to get file items. 
     List fileItems = upload.parseRequest(request); 
     // Process the uploaded file items 
     Iterator i = fileItems.iterator(); 

     out.println("<html>"); 
     out.println("<head>"); 
     out.println("<title>JSP File upload</title>"); 
     out.println("</head>"); 
     out.println("<body>"); 
     while (i.hasNext()) { 
      FileItem fi = (FileItem) i.next(); 
      if (!fi.isFormField()) { 
       // Get the uploaded file parameters 
       String fieldName = fi.getFieldName(); 
       String fileName = fi.getName(); 
       boolean isInMemory = fi.isInMemory(); 
       long sizeInBytes = fi.getSize(); 
       // Write the file 
       if (fileName.lastIndexOf("\\") >= 0) { 
        file = new File(filePath + 
       fileName.substring(fileName.lastIndexOf("\\"))); 
       } else { 
        file = new File(filePath + 
       fileName.substring(fileName.lastIndexOf("\\") + 1)); 
       } 
       fi.write(file); 
       out.println("Uploaded Filename: " + filePath + fileName + " 
       <br>"); 
      } 
     } 
     out.println("</body>"); 
     out.println("</html>"); 
    } catch (Exception ex) { 
     System.out.println(ex); 
    } 
} else { 
    out.println("<html>"); 
    out.println("<head>"); 
    out.println("<title>Servlet upload</title>"); 
    out.println("</head>"); 
    out.println("<body>"); 
    out.println("<p>No file uploaded</p>"); 
    out.println("</body>"); 
    out.println("</html>"); 
} 
%> 

是越來越打印輸出作爲無文件上傳

謝謝

回答

1

當您發出POST請求時,您必須以某種方式編碼形成請求主體的數據。

HTML表單提供了三種編碼方法。

  • 應用程序/ x-WWW窗體-urlencoded(缺省值)
  • 的multipart/form-data的
  • 純文本/

enctype=multipart/form-data使用當您的形式包括任何<input type="file">元件。

所以使用

<form action="upload_images_result.jsp" method="post" enctype="multipart/form-data"> 
    <div align="left"> 
     Select a file: <input type="file" name="file" size="50" 
      enctype="multipart/form-data" placeholder="Upload Your Image" /> 
    </div> 
    <br> 
    <div> 
     <input type="submit" value="Upload File" /> 
    </div> 
</form> 
+0

謝謝這個工作先生 – 2015-02-08 11:53:10

1

您在HTML中使用錯誤的屬性。 屬性enctype =「multipart/form-data」僅用於標籤form,如下所示。

<form action="upload_images_result.jsp" 
     method="post" 
     enctype="multipart/form-data"> 
</form> 

或者,您可以在tag input type="submit"中使用如下。

<form action="upload_images_result.jsp" 
     method="post"> 
    <input type="submit" 
     formenctype="multipart/form-data" 
     value="Submit as Multipart/form-data"/> 
</form> 
+1

thanx的答覆的先生,你的第一個也是正確的 – 2015-02-08 11:56:49

相關問題