2013-02-18 2 views
4

업로드 버튼을 한 번만 클릭하면 여러 파일을 업로드하도록 제안하고 싶습니다. 멀티 파트를 사용하여 파일을 보낼 수 있습니까? 그렇다면 어떻게?단일 서블릿 요청을 사용하여 여러 파일 업로드

피씨 : 플래시를 사용하거나 한 번에 하나의 파일을 보내고 싶지 않습니다.

답변

3

예, 가능합니다. 시도 apache fileupload library,이 질문을 참조 할 수 있습니다 stackoverflow : Multiple file upload in Jsp using Apache commons file upload API 또는 this full example. 또한 this article을 참조하여 Spring을 사용할 수도 있습니다. HTML 당신, 당신은 다음과 같은 작업을 수행 할 수이 도움이

+0

응답 해 주셔서 감사합니다. 외부 라이브러리 또는 API를 사용하지 않으려 고합니다. – rehan

7

희망 ...

//JSP File 

<html> 
<head><title>Upload page</title></head></p> <p><body> 
<form action="upload_file" method="post" enctype="multipart/form-data" name="form1" id="form1"> 
<center> 
Specify file: <input name="file" type="file" id="file"> 
Specify file: <input name="file" type="file" id="file"> 
Specify file:<input name="file" type="file" id="file"> 
<input type="submit" name="Submit" value="Submit files"/> 
<center> 
</form> 
</body> 
</html> 


//Servlet Page 

import java.util.List; 
import java.util.Iterator; 
import org.apache.commons.fileupload.servlet.ServletFileUpload; 
import org.apache.commons.fileupload.disk.DiskFileItemFactory; 
import org.apache.commons.fileupload.*; 

boolean isMultipart = ServletFileUpload.isMultipartContent(request); 
    if (!isMultipart) { 
    } 
    else{ 
     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(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>"); 
       } catch (Exception e) { 
        e.printStackTrace(); 
       } 
     } 
} 
+0

응답 해 주셔서 감사하지만 봄을 사용할 수 없습니다. 서블릿 2.5 만 사용할 수 있습니다. – rehan

+0

업데이트 된 답변을 친절하게 확인하십시오. – Sabarish

+0

아니요, 아파치 공유지를 사용할 수 없습니다. 또는 어떤 외부 라이브러리), 또한 나는 많은 파일의 진행 상황을 모니터링해야 업로드되었습니다. 그 JS에서 처리 할 필요가 :) – rehan

8

:

<input accept="image/jpeg,image/gif,image/png" type="file" name="upload[]" multiple/> 

은 입력의 끝에 multiple을 추가 당신이 원하는 무엇을 부여합니다.

관련 문제