使用 jsp 和 servlet 上传多个文件

use*_*610 4 java jsp servlets file-upload

我目前正在开发一个动态 Web 应用程序,我希望用户能够一次上传多个文件供应用程序使用。我不知道用户一次可以上传多少个文件;它可能是 2 个,也可能是 100 多个文件。我是 JSP 动态 Web 应用程序的新手,我从一个上传文件开始,但我不确定从哪里开始。我查看了几个搜索示例,但无法准确找到我正在寻找的内容。这是我到目前为止:

小服务程序:

package Servlets;
import java.io.File;  
import java.io.IOException;  
import java.io.PrintWriter;  
import java.util.Iterator;   
import java.util.List;  
import javax.servlet.ServletException;  
import javax.servlet.http.HttpServlet;  
import javax.servlet.http.HttpServletRequest;  
import javax.servlet.http.HttpServletResponse;  
import org.apache.commons.fileupload.FileItem;  
import org.apache.commons.fileupload.FileItemFactory;  
import org.apache.commons.fileupload.FileUploadException;  
import org.apache.commons.fileupload.disk.DiskFileItemFactory;  
import org.apache.commons.fileupload.servlet.ServletFileUpload;  

public class UploadServlet extends HttpServlet 
{  

private static final long serialVersionUID = 1L;

    @Override  
      protected void doPost(HttpServletRequest request, HttpServletResponse response)  
          throws ServletException, IOException 
          {  
            boolean isMultipart = ServletFileUpload.isMultipartContent(request);  
            response.setContentType("text/html");  
            PrintWriter out = response.getWriter();  
            if (isMultipart) 
            {  
                // Create a factory for disk-based file items  
                FileItemFactory factory = new DiskFileItemFactory();  
                // Create a new file upload handler  
                ServletFileUpload upload = new ServletFileUpload(factory);  
                try 
                {  
                    // Parse the request  
                    List items = upload.parseRequest(request);  
                    Iterator iterator = items.iterator();  
                    while (iterator.hasNext()) 
                    {  
                        FileItem item = (FileItem) iterator.next();  
                        if (!item.isFormField())  
                        {  
                            String fileName = item.getName();      
                            String root = getServletContext().getRealPath("/");  
                            File path = new File(root + "/uploads");  
                            if (!path.exists())  
                            {  
                                boolean status = path.mkdirs();  
                            }  
                            File uploadedFile = new File(path + "/" + fileName);  
                            System.out.println(uploadedFile.getAbsolutePath());  
                        if(fileName!="")  
                            item.write(uploadedFile);  
                        else  
                        out.println("file not found");  
                        out.println("<h1>File Uploaded Successfully....:-)</h1>");  
                    }  
                    else  
                    {  
                        String abc = item.getString();  
                        out.println("<br><br><h1>"+abc+"</h1><br><br>");  
                    }  
                }  
            } 
            catch (FileUploadException e) 
            {  
            out.println(e);  
            } 
            catch (Exception e) 
            {  
            out.println(e);  
            }  
        }  
        else  
        {  
            out.println("Not Multipart");  
        }  
      }  
}
Run Code Online (Sandbox Code Playgroud)

.JSP 文件:

<form method="post" action="UploadServlet" enctype="multipart/form-data">
Select file to upload:
    <p><input type="file" name="dataFile" id="fileChooser" />&nbsp;
    <input type="submit" value="Upload" multiple="multiple" /></p>
</form>
Run Code Online (Sandbox Code Playgroud)

我正在寻找一种上传多个文件而不是一个文件并将它们显示在列表中的方法。

Shi*_*ari 5

使用 Servlet 3.0检查 FileUPload

它有一个使用 Servlet3.0 上传单个文件的工作代码,正如您所看到的,代码现在大大简化了。并且不依赖 apache 库。

只需在下面使用 index.html

<html>
<head></head>
<body>
<form action="FileUploadServlet" method="post" enctype="multipart/form-data">
Select File to Upload:<input type="file"  name="fileName" multiple/>
<br>
<input type="submit" value="Upload"/>
</form>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)

这里唯一的变化是我使用multiple 了输入类型文件的属性