Advertisement
Guest User

Untitled

a guest
Sep 18th, 2014
253
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 3.06 KB | None | 0 0
  1. package com.sirma.customs.ems21.web.fileupload;
  2.  
  3. import java.io.Closeable;
  4. import java.io.File;
  5. import java.io.FileOutputStream;
  6. import java.io.IOException;
  7. import java.io.InputStream;
  8. import java.util.List;
  9.  
  10. import javax.servlet.ServletException;
  11. import javax.servlet.http.HttpServlet;
  12. import javax.servlet.http.HttpServletRequest;
  13. import javax.servlet.http.HttpServletResponse;
  14.  
  15. import org.apache.commons.fileupload.FileItem;
  16. import org.apache.commons.fileupload.FileItemFactory;
  17. import org.apache.commons.fileupload.disk.DiskFileItemFactory;
  18. import org.apache.commons.fileupload.servlet.ServletFileUpload;
  19.  
  20. /**
  21.  * Accepts the request passed from the sign applet. There should be two
  22.  * parameters: a file and filename (string). The file is then written in a temp
  23.  * directory to be used from action class. And filename is stored in
  24.  * servletContext as attribute - it is needed because the filename contains a
  25.  * timestamp part appended on creation time and we doesn't know what is it
  26.  * exactly.
  27.  *
  28.  * @author svelikov
  29.  */
  30. public class FileUploaderServlet extends HttpServlet {
  31.     private static final long serialVersionUID = 1L;
  32.  
  33.     private static final int SIZE_THRESHOLD = 1024 * 1024 * 10; // 10MB
  34.  
  35.     /**
  36.      * Default constructor.
  37.      */
  38.     public FileUploaderServlet() {
  39.         super();
  40.     }
  41.  
  42.     /**
  43.      * {@inheritDoc}
  44.      */
  45.     @Override
  46.     protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
  47.         processRequest(req, resp);
  48.     }
  49.  
  50.     /**
  51.      * Process the request.
  52.      *
  53.      * @param req
  54.      *            HttpServletRequest.
  55.      * @param resp
  56.      *            HttpServletResponse.
  57.      */
  58.     public void processRequest(HttpServletRequest req, HttpServletResponse resp) {
  59.         boolean isMultipart = ServletFileUpload.isMultipartContent(req);
  60.         String tempFilePath = getServletContext().getAttribute("javax.servlet.context.tempdir") + "/";
  61.  
  62.         if (isMultipart) {
  63.             String fullFileName;
  64.  
  65.             // Create a factory for disk-based file items
  66.             FileItemFactory factory = new DiskFileItemFactory(SIZE_THRESHOLD, new File(tempFilePath));
  67.  
  68.             // Create a new file upload handler
  69.             ServletFileUpload upload = new ServletFileUpload(factory);
  70.             FileOutputStream fos = null;
  71.             try {
  72.                 List<FileItem> items = upload.parseRequest(req);
  73.                 for (FileItem item : items) {
  74.                     if (item.isFormField()) {
  75.                         // we haven't form fields set in the request
  76.                     } else {
  77.                         String signedFilePath = tempFilePath + item.getName();
  78.                         fos = new FileOutputStream(signedFilePath);
  79.                         InputStream fileStream = item.getInputStream();
  80.                         int current = 0;
  81.                         while ((current = fileStream.read()) != -1) {
  82.                             fos.write(current);
  83.                         }
  84.                     }
  85.                 }
  86.             } catch (Exception e) {
  87.                 e.printStackTrace();
  88.             } finally {
  89.                 close(fos);
  90.             }
  91.         }
  92.     }
  93.  
  94.     /**
  95.      * Closes provided stream.
  96.      *
  97.      * @param stream
  98.      *            The stream to be closed.
  99.      */
  100.     private void close(Closeable stream) {
  101.         if (stream != null) {
  102.             try {
  103.                 stream.close();
  104.             } catch (IOException e) {
  105.                 e.printStackTrace();
  106.             }
  107.         }
  108.     }
  109.  
  110. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement