Java how to handle multiple files upload

To handle multiple file uploads in a Java web application, you can use the Apache Commons FileUpload library. Here's how you can do it:

  1. Add the Apache Commons FileUpload library to your project: Download the latest version of the library from the Apache website and add the JAR file to your project's classpath.

  2. Create a form to upload multiple files: In your JSP or HTML file, create a form with an input element of type "file" that allows multiple files to be selected:

<form action="UploadServlet" method="post" enctype="multipart/form-data">
    <input type="file" name="file" multiple>
    <input type="submit" value="Upload">
</form>
Sourc‮‬e:www.theitroad.com
  1. Create a servlet to handle the file uploads: In your servlet, use the Apache Commons FileUpload library to handle the file uploads. Here's an example:
public class UploadServlet extends HttpServlet {
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        // Create a new file upload handler
        ServletFileUpload upload = new ServletFileUpload(new DiskFileItemFactory());

        try {
            // Parse the request
            List<FileItem> items = upload.parseRequest(request);
            for (FileItem item : items) {
                // Process the file
                if (!item.isFormField()) {
                    String fileName = new File(item.getName()).getName();
                    String filePath = "C:/uploads/" + fileName;
                    File uploadedFile = new File(filePath);
                    item.write(uploadedFile);
                }
            }

            // Redirect back to the upload page with a success message
            request.setAttribute("message", "Files uploaded successfully!");
            getServletContext().getRequestDispatcher("/upload.jsp").forward(request, response);

        } catch (Exception e) {
            // Handle any errors
            request.setAttribute("message", "There was an error: " + e.getMessage());
            getServletContext().getRequestDispatcher("/upload.jsp").forward(request, response);
        }
    }
}

In this example, we create a new instance of the ServletFileUpload class and parse the request to get a list of FileItem objects. We then iterate over the list and process each file by writing it to the file system.

  1. Display the result to the user: In your JSP or HTML file, you can display a message to the user indicating whether the files were uploaded successfully or if there was an error:
<h1>Upload Files</h1>

<% if (request.getAttribute("message") != null) { %>
    <p><%= request.getAttribute("message") %></p>
<% } %>

<form action="UploadServlet" method="post" enctype="multipart/form-data">
    <input type="file" name="file" multiple>
    <input type="submit" value="Upload">
</form>

That's it! With these steps, you can handle multiple file uploads in your Java web application using the Apache Commons FileUpload library.