package edu.pdx.cs410J.servlets;
import org.apache.commons.fileupload.servlet.ServletFileUpload;
import org.apache.commons.fileupload.FileItemFactory;
import org.apache.commons.fileupload.FileUploadException;
import org.apache.commons.fileupload.FileItem;
import org.apache.commons.fileupload.disk.DiskFileItemFactory;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.ServletException;
import java.io.IOException;
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.util.List;
import java.util.Iterator;
/**
* A servlet that demonstrates how to upload a file to a web server. It uses the Apache Commons
* <a href="http://commons.apache.org/fileupload">FileUpload</a> library to read the file from the
* HTTP request.
*
* @since Summer 2008
*/
public class FileUploadServlet extends HttpServlet {
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
response.setContentType("text/html");
PrintWriter pw = response.getWriter();
pw.println("<html>");
pw.println("<body>");
if (ServletFileUpload.isMultipartContent(request)) {
FileItemFactory factory = new DiskFileItemFactory();
ServletFileUpload upload = new ServletFileUpload(factory);
List items;
try {
items = upload.parseRequest(request);
} catch (FileUploadException ex) {
throw new ServletException("Could not upload file", ex);
}
for (Iterator iter = items.iterator(); iter.hasNext(); ) {
FileItem item = (FileItem) iter.next();
if (item.isFormField()) {
// Non-file field in the form
} else {
String fileName = item.getName();
String contentType = item.getContentType();
pw.println("<h1>You uploaded " + fileName + "</h1>");
pw.println("<h2>Content type is " + contentType + "</h2>");
if (contentType.equals("text/plain")) {
pw.println("<pre>");
BufferedReader br = new BufferedReader(new InputStreamReader(item.getInputStream()));
while (br.ready()) {
pw.println(br.readLine());
}
pw.println("</pre>");
}
}
}
} else {
pw.println("<h1>You did not upload a file?!</h1>");
}
ServletInfoServlet.dump(request, pw);
pw.println("</body>");
pw.println("</html>");
}
}