Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package com.sirma.customs.ems21.web.fileupload;
- import java.io.Closeable;
- import java.io.File;
- import java.io.FileOutputStream;
- import java.io.IOException;
- import java.io.InputStream;
- import java.util.List;
- import javax.servlet.ServletException;
- import javax.servlet.http.HttpServlet;
- import javax.servlet.http.HttpServletRequest;
- import javax.servlet.http.HttpServletResponse;
- import org.apache.commons.fileupload.FileItem;
- import org.apache.commons.fileupload.FileItemFactory;
- import org.apache.commons.fileupload.disk.DiskFileItemFactory;
- import org.apache.commons.fileupload.servlet.ServletFileUpload;
- /**
- * Accepts the request passed from the sign applet. There should be two
- * parameters: a file and filename (string). The file is then written in a temp
- * directory to be used from action class. And filename is stored in
- * servletContext as attribute - it is needed because the filename contains a
- * timestamp part appended on creation time and we doesn't know what is it
- * exactly.
- *
- * @author svelikov
- */
- public class FileUploaderServlet extends HttpServlet {
- private static final long serialVersionUID = 1L;
- private static final int SIZE_THRESHOLD = 1024 * 1024 * 10; // 10MB
- /**
- * Default constructor.
- */
- public FileUploaderServlet() {
- super();
- }
- /**
- * {@inheritDoc}
- */
- @Override
- protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
- processRequest(req, resp);
- }
- /**
- * Process the request.
- *
- * @param req
- * HttpServletRequest.
- * @param resp
- * HttpServletResponse.
- */
- public void processRequest(HttpServletRequest req, HttpServletResponse resp) {
- boolean isMultipart = ServletFileUpload.isMultipartContent(req);
- String tempFilePath = getServletContext().getAttribute("javax.servlet.context.tempdir") + "/";
- if (isMultipart) {
- String fullFileName;
- // Create a factory for disk-based file items
- FileItemFactory factory = new DiskFileItemFactory(SIZE_THRESHOLD, new File(tempFilePath));
- // Create a new file upload handler
- ServletFileUpload upload = new ServletFileUpload(factory);
- FileOutputStream fos = null;
- try {
- List<FileItem> items = upload.parseRequest(req);
- for (FileItem item : items) {
- if (item.isFormField()) {
- // we haven't form fields set in the request
- } else {
- String signedFilePath = tempFilePath + item.getName();
- fos = new FileOutputStream(signedFilePath);
- InputStream fileStream = item.getInputStream();
- int current = 0;
- while ((current = fileStream.read()) != -1) {
- fos.write(current);
- }
- }
- }
- } catch (Exception e) {
- e.printStackTrace();
- } finally {
- close(fos);
- }
- }
- }
- /**
- * Closes provided stream.
- *
- * @param stream
- * The stream to be closed.
- */
- private void close(Closeable stream) {
- if (stream != null) {
- try {
- stream.close();
- } catch (IOException e) {
- e.printStackTrace();
- }
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement