Package org.tamacat.httpd.mime

Source Code of org.tamacat.httpd.mime.HttpFileUpload

/*
* Copyright (c) 2010, TamaCat.org
* All rights reserved.
*/
package org.tamacat.httpd.mime;

import java.io.IOException;
import java.util.ArrayList;
import java.util.List;

import org.apache.commons.fileupload.FileItem;
import org.apache.commons.fileupload.FileItemFactory;
import org.apache.commons.fileupload.FileItemIterator;
import org.apache.commons.fileupload.FileItemStream;
import org.apache.commons.fileupload.FileUpload;
import org.apache.commons.fileupload.FileUploadException;
import org.apache.commons.fileupload.RequestContext;
import org.apache.commons.fileupload.disk.DiskFileItemFactory;
import org.apache.commons.fileupload.util.Streams;
import org.apache.http.HttpRequest;
import org.tamacat.io.MessageDigestInputStream;

public class HttpFileUpload extends FileUpload {
 
  private String algorithm = "SHA-256";
 
    /**
     * <p>Get the algorithm of checksum. (MessageDigest)
     * Default algorithm: "SHA-256"
     * @return algorithm
     */
  public String getAlgorithm() {
    return algorithm;
  }

  /**
   * <p>Set the algorithm of checksum. (MessageDigest)
   * Default algorithm: "SHA-256"
   * @param algorithm
   */
  public void setAlgorithm(String algorithm) {
    this.algorithm = algorithm;
  }
 
  public List<FileItem> parseRequest(HttpRequest request)
      throws FileUploadException {
    RequestContext ctx = new HttpRequestContext(request);
      if (getFileItemFactory() == null) {
        setFileItemFactory(new DiskFileItemFactory());
      }
    return parseRequest(ctx);
    }

  @Override
  public List<FileItem> parseRequest(RequestContext ctx) throws FileUploadException {
     try {
         FileItemIterator iter = getItemIterator(ctx);
         List<FileItem> items = new ArrayList<FileItem>();
         FileItemFactory fac = getFileItemFactory();
         if (fac == null) {
             throw new NullPointerException(
                 "No FileItemFactory has been set.");
         }
         while (iter.hasNext()) {
             FileItemStream item = iter.next();
             HttpFileItem fileItem = new HttpFileItem(fac.createItem(item.getFieldName(),
                     item.getContentType(), item.isFormField(),
                     item.getName())
             );
             try {
               MessageDigestInputStream in = new MessageDigestInputStream(
                   item.openStream(), algorithm);
                 Streams.copy(in, fileItem.getOutputStream(), true);
                
                 fileItem.setDigest(in.getDigest());
             } catch (FileUploadIOException e) {
                 throw (FileUploadException) e.getCause();
             } catch (IOException e) {
                 throw new IOFileUploadException(
                         "Processing of " + MULTIPART_FORM_DATA
                         + " request failed. " + e.getMessage(), e);
             }
             items.add(fileItem);
         }
         return items;
     } catch (FileUploadIOException e) {
         throw (FileUploadException) e.getCause();
     } catch (IOException e) {
         throw new FileUploadException(e.getMessage(), e);
     }
  }
}
TOP

Related Classes of org.tamacat.httpd.mime.HttpFileUpload

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.