Package org.projectforge.web.imagecropper

Source Code of org.projectforge.web.imagecropper.UploadImageFileTemporary

/////////////////////////////////////////////////////////////////////////////
//
// Project ProjectForge Community Edition
//         www.projectforge.org
//
// Copyright (C) 2001-2014 Kai Reinhard (k.reinhard@micromata.de)
//
// ProjectForge is dual-licensed.
//
// This community edition is free software; you can redistribute it and/or
// modify it under the terms of the GNU General Public License as published
// by the Free Software Foundation; version 3 of the License.
//
// This community edition is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General
// Public License for more details.
//
// You should have received a copy of the GNU General Public License along
// with this program; if not, see http://www.gnu.org/licenses/.
//
/////////////////////////////////////////////////////////////////////////////

package org.projectforge.web.imagecropper;

import java.io.File;
import java.io.IOException;
import java.util.Iterator;
import java.util.List;

import javax.servlet.ServletException;
import javax.servlet.ServletOutputStream;
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.FileUploadException;
import org.apache.commons.fileupload.disk.DiskFileItemFactory;
import org.apache.commons.fileupload.servlet.ServletFileUpload;
import org.projectforge.user.PFUserDO;
import org.projectforge.web.UserFilter;

/**
* Servlet Funktion: Temporärer Upload eines Images in das Verzeichnis tempimages. Wird benötigt um Bild vom lokalen Rechner über den Server
* in den Flexclient zu laden
*
*/
public class UploadImageFileTemporary extends HttpServlet
{
  private static final long serialVersionUID = -6889184720152393862L;

  private static final long MAX_SUPPORTED_FILE_SIZE = 10000000; // 10 Megabyte

  private static final org.apache.log4j.Logger log = org.apache.log4j.Logger.getLogger(UploadImageFileTemporary.class);

  /**
   * @see javax.servlet.http.HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
   */
  protected void doPost(final HttpServletRequest request, final HttpServletResponse response) throws ServletException, IOException
  {
    log.debug("Start doPost");
    final PFUserDO user = UserFilter.getUser(request);
    if (user == null) {
      log.warn("Calling of UploadImageFileTemp without logged in user.");
      return;
    }
    // check if the sent request is of the type multi part
    final boolean isMultipart = ServletFileUpload.isMultipartContent(request);
    if (isMultipart == false) {
      log.warn("The request is not of the type multipart");
      return;
    }
    try { // Parse the request
      final FileItem imgFile = getImgFileItem(request); // get the file item of the multipart request
      // everything ok so far so process the file uploaded
      if (imgFile == null || imgFile.getSize() == 0) {
        log.warn("No file was uploaded, aborting!");
        return;
      }
      if (imgFile.getSize() > MAX_SUPPORTED_FILE_SIZE) {
        log.warn("Maximum file size exceded for file '" + imgFile.getName() + "': " + imgFile.getSize());
        return;
      }
      final File tmpImageFile = ImageCropperUtils.getTempFile(user); // Temporary file
      log.info("Writing tmp file: " + tmpImageFile.getAbsolutePath());
      try {
        // Write new File
        imgFile.write(tmpImageFile);
      } catch (Exception e) {
        log.error("Could not write " + tmpImageFile.getAbsolutePath(), e);
      }
    } catch (FileUploadException ex) {
      log.warn("Failure reading the multipart request");
      log.warn(ex.getMessage(), ex);
    }
    final ServletOutputStream out = response.getOutputStream();
    out.println("text/html");
  }

  /**
   * This function gets the fileItem from the form
   *
   * @param items the list of fields sent to this servlet
   * @return the imgItem if not found it returns null
   */
  private FileItem getImgFileItem(final HttpServletRequest request) throws FileUploadException
  {
    // Create a factory for disk-based file items
    final FileItemFactory factory = new DiskFileItemFactory();
    // Create a new file upload handler
    final ServletFileUpload upload = new ServletFileUpload(factory);
    final List< ? > items = upload.parseRequest(request); // get the items sent by the form
    FileItem fileItem = null;
    final Iterator< ? > iter = items.iterator();
    // iterate over the items and if the required field is found break the loop
    while (iter.hasNext()) {
      fileItem = (FileItem) iter.next();
      if (fileItem.isFormField() == false) {
        break;
      }
    }
    return fileItem;
  }
}
TOP

Related Classes of org.projectforge.web.imagecropper.UploadImageFileTemporary

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.