【问题标题】:Multiple File upload using single servlet request使用单个 servlet 请求上传多个文件
【发布时间】:2013-02-02 15:25:55
【问题描述】:

我想提议只点击一次上传按钮上传多个文件。我可以使用多部分发送文件吗?如果是,那么如何?

P.S.:我不想使用闪存或一次发送一个文件。

【问题讨论】:

    标签: java html file http multipart


    【解决方案1】:

    在您的 HTML 中,您可以执行以下操作:

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

    在您输入的末尾添加multiple 可以满足您的需求。

    【讨论】:

      【解决方案2】:

      希望这会有所帮助...

      //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();
                    }
             }
      }
      

      【讨论】:

      • 感谢您的回复,但我不能使用 spring 我只能使用 servlets 2.5
      • 更新答案请验证
      • 不,我不能使用 apache commons(或任何外部库),我还必须监控已上传文件的进度。我必须在 JS 中处理 :)
      【解决方案3】:

      是的,你可以。试试apache fileupload library,你可以参考stackoverflow上的这个问题:Multiple file upload in Jsp using Apache commons file upload APIthis full example。你也可以通过引用this article来使用Spring。

      【讨论】:

      • 感谢您的回复,但我不想使用外部库或 API
      猜你喜欢
      • 2013-03-30
      • 2017-11-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-03-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多