001package edu.pdx.cs.joy.servlets; 002 003import jakarta.servlet.ServletException; 004import jakarta.servlet.http.HttpServlet; 005import jakarta.servlet.http.HttpServletRequest; 006import jakarta.servlet.http.HttpServletResponse; 007import org.apache.commons.fileupload2.core.DiskFileItem; 008import org.apache.commons.fileupload2.core.DiskFileItemFactory; 009import org.apache.commons.fileupload2.core.FileUploadException; 010import org.apache.commons.fileupload2.jakarta.servlet6.JakartaServletFileUpload; 011 012import java.io.BufferedReader; 013import java.io.IOException; 014import java.io.InputStreamReader; 015import java.io.PrintWriter; 016import java.util.List; 017 018/** 019 * A servlet that demonstrates how to upload a file to a web server. It uses the Apache Commons 020 * <a href="http://commons.apache.org/fileupload">FileUpload</a> library to read the file from the 021 * HTTP request. 022 * 023 * @since Summer 2008 024 */ 025public class FileUploadServlet extends HttpServlet { 026 027 @Override 028 protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { 029 response.setContentType("text/html"); 030 PrintWriter pw = response.getWriter(); 031 pw.println("<html>"); 032 pw.println("<body>"); 033 034 if (JakartaServletFileUpload.isMultipartContent(request)) { 035 DiskFileItemFactory factory = new DiskFileItemFactory.Builder().get(); 036 JakartaServletFileUpload<DiskFileItem, DiskFileItemFactory> upload = new JakartaServletFileUpload<>(factory); 037 List<DiskFileItem> items; 038 try { 039 items = upload.parseRequest(request); 040 041 } catch (FileUploadException ex) { 042 throw new ServletException("Could not upload file", ex); 043 } 044 045 for (DiskFileItem item : items) { 046 if (!item.isFormField()) { 047 String fileName = item.getName(); 048 String contentType = item.getContentType(); 049 pw.println("<h1>You uploaded " + fileName + "</h1>"); 050 pw.println("<h2>Content type is " + contentType + "</h2>"); 051 052 if (contentType.equals("text/plain")) { 053 pw.println("<pre>"); 054 055 BufferedReader br = new BufferedReader(new InputStreamReader(item.getInputStream())); 056 while (br.ready()) { 057 pw.println(br.readLine()); 058 } 059 060 pw.println("</pre>"); 061 } 062 } 063 064 } 065 066 } else { 067 pw.println("<h1>You did not upload a file?!</h1>"); 068 } 069 070 ServletInfoServlet.dump(request, pw); 071 072 pw.println("</body>"); 073 pw.println("</html>"); 074 } 075}