Package com.cubusmail.server.services

Source Code of com.cubusmail.server.services.AttachmentUploadServlet

/* AttachmentUploadServlet.java

   Copyright (c) 2009 Juergen Schlierf, All Rights Reserved
  
   This file is part of Cubusmail (http://code.google.com/p/cubusmail/).
 
   This library is free software; you can redistribute it and/or
   modify it under the terms of the GNU Lesser General Public
   License as published by the Free Software Foundation; either
   version 3 of the License, or (at your option) any later version.
 
   This library 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
   Lesser General Public License for more details.
 
   You should have received a copy of the GNU Lesser General Public
   License along with Cubusmail. If not, see <http://www.gnu.org/licenses/>.
  
*/
package com.cubusmail.server.services;

import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStreamWriter;
import java.io.Writer;

import javax.activation.DataSource;
import javax.mail.MessagingException;
import javax.mail.util.ByteArrayDataSource;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.apache.commons.fileupload.FileItemIterator;
import org.apache.commons.fileupload.FileItemStream;
import org.apache.commons.fileupload.servlet.ServletFileUpload;
import org.apache.commons.fileupload.util.Streams;
import org.apache.commons.io.FilenameUtils;
import org.json.JSONObject;

import com.cubusmail.server.mail.SessionManager;

/**
* Retrieve Attachments.
*
* @author Juergen Schlierf
*/
public class AttachmentUploadServlet extends HttpServlet {

  /**
   * Comment for <code>serialVersionUID</code>
   */
  private static final long serialVersionUID = 7973672729803989276L;

  /*
   * (non-Javadoc)
   *
   * @see
   * javax.servlet.http.HttpServlet#service(javax.servlet.http.HttpServletRequest
   * , javax.servlet.http.HttpServletResponse)
   */
  @Override
  protected void service( HttpServletRequest request, HttpServletResponse response ) throws ServletException,
      IOException {

    boolean isMultipart = ServletFileUpload.isMultipartContent( request );

    // Create a new file upload handler
    if ( isMultipart ) {
      ServletFileUpload upload = new ServletFileUpload();

      try {
        // Parse the request
        FileItemIterator iter = upload.getItemIterator( request );
        while ( iter.hasNext() ) {
          FileItemStream item = iter.next();
          String name = item.getFieldName();
          InputStream stream = item.openStream();
          if ( item.isFormField() ) {
            System.out.println( "Form field " + name + " with value " + Streams.asString( stream )
                + " detected." );
          } else {
            System.out.println( "File field " + name + " with file name " + item.getName() + " detected." );
            DataSource source = createDataSource( item );
            SessionManager.get().getCurrentComposeMessage().addComposeAttachment( source );
          }

          JSONObject jsonResponse = null;
          try {
            jsonResponse = new JSONObject();
            jsonResponse.put( "success", true );
            jsonResponse.put( "error", "Upload successful" );
          }
          catch ( Exception e ) {

          }

          Writer w = new OutputStreamWriter( response.getOutputStream() );
          w.write( jsonResponse.toString() );
          w.close();

          stream.close();
        }
      }
      catch ( Exception ex ) {
        ex.printStackTrace();
      }
    }

    response.setStatus( HttpServletResponse.SC_OK );
  }

  /**
   * Create a MimeBodyPart.
   *
   * @param item
   * @return
   * @throws MessagingException
   * @throws IOException
   */
  private DataSource createDataSource( FileItemStream item ) throws MessagingException, IOException {

    final String fileName = FilenameUtils.getName( item.getName() );
    final String contentType = item.getContentType();
    final InputStream stream = item.openStream();

    ByteArrayDataSource source = new ByteArrayDataSource( stream, contentType );
    source.setName( fileName );

    return source;
  }
}
TOP

Related Classes of com.cubusmail.server.services.AttachmentUploadServlet

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.