I have a couple of other articles and code that are better, but I thought I would publish this just as another example. I did a quick code search and it appears I was using some code example snippets from the Apache Commons fileupload site, some forum posts, and an article OnJava on the O'Reilly & Associates site: Using the Jakarta Commons, Part 1.
Simply put, the provenance of this code is questionable. If you contributed to it, please send me a link to your code and I will add your name to the authors list. I don't want to claim the code as my own since I am sure I got it from multiple F/OSS sources.
Here are some of the other articles which I am sure I know about:
- Multiple File Upload Examples
- Multiple File Upload Options
- Servlet 3.0 and HTML 5 File Upload Servlet Example
ApacheCommonsFileUploadServlet.java
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 | package com.bluelotussoftware.apache.commons.fileupload.example; import java.io.File; import java.io.IOException; import java.io.PrintWriter; import java.util.Iterator; import java.util.List; import java.util.logging.Level; import java.util.logging.Logger; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.apache.commons.fileupload.DiskFileUpload; import org.apache.commons.fileupload.FileItem; import org.apache.commons.fileupload.FileUpload; import org.apache.commons.fileupload.FileUploadException; /** * * @author Unknown * @author Vikram Goyal * @author John Yeary * @version 1.0 */ public class ApacheCommonsFileUploadServlet extends HttpServlet { /** * Processes requests for both HTTP * <code>GET</code> and * <code>POST</code> methods. * * @param request servlet request * @param response servlet response * @throws ServletException if a servlet-specific error occurs * @throws IOException if an I/O error occurs */ protected void processRequest(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { response.setContentType( "text/plain;charset=UTF-8" ); PrintWriter out = response.getWriter(); try { // first check if the upload request coming in is a multipart request boolean isMultipart = FileUpload.isMultipartContent(request); log( "content-length: " + request.getContentLength()); log( "method: " + request.getMethod()); log( "character encoding: " + request.getCharacterEncoding()); if (isMultipart) { DiskFileUpload upload = new DiskFileUpload(); List items = null ; try { // parse this request by the handler // this gives us a list of items from the request items = upload.parseRequest(request); log( "items: " + items.toString()); } catch (FileUploadException ex) { log( "Failed to parse request" , ex); } Iterator itr = items.iterator(); while (itr.hasNext()) { FileItem item = (FileItem) itr.next(); // check if the current item is a form field or an uploaded file if (item.isFormField()) { // get the name of the field String fieldName = item.getFieldName(); // if it is name, we can set it in request to thank the user if (fieldName.equals( "name" )) { out.print( "Thank You: " + item.getString()); } } else { // the item must be an uploaded file save it to disk. Note that there // seems to be a bug in item.getName() as it returns the full path on // the client's machine for the uploaded file name, instead of the file // name only. To overcome that, I have used a workaround using // fullFile.getName(). File fullFile = new File(item.getName()); File savedFile = new File(getServletContext().getRealPath( "/" ), fullFile.getName()); try { item.write(savedFile); } catch (Exception ex) { log( "Failed to save file" , ex); } } } } } finally { out.close(); } } // <editor-fold defaultstate="collapsed" desc="HttpServlet methods. Click on the + sign on the left to edit the code."> /** * Handles the HTTP * <code>GET</code> method. * * @param request servlet request * @param response servlet response * @throws ServletException if a servlet-specific error occurs * @throws IOException if an I/O error occurs */ @Override protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { processRequest(request, response); } /** * Handles the HTTP * <code>POST</code> method. * * @param request servlet request * @param response servlet response * @throws ServletException if a servlet-specific error occurs * @throws IOException if an I/O error occurs */ @Override protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { processRequest(request, response); } /** * Returns a short description of the servlet. * * @return a String containing servlet description */ @Override public String getServletInfo() { return "Short description" ; } // </editor-fold> } |
0 comments :
Post a Comment