Home » commons-fileupload-1.2-src » org.apache.commons » fileupload » servlet » [javadoc | source]
    1   /*
    2    * Licensed to the Apache Software Foundation (ASF) under one or more
    3    * contributor license agreements.  See the NOTICE file distributed with
    4    * this work for additional information regarding copyright ownership.
    5    * The ASF licenses this file to You under the Apache License, Version 2.0
    6    * (the "License"); you may not use this file except in compliance with
    7    * the License.  You may obtain a copy of the License at
    8    *
    9    *      http://www.apache.org/licenses/LICENSE-2.0
   10    *
   11    * Unless required by applicable law or agreed to in writing, software
   12    * distributed under the License is distributed on an "AS IS" BASIS,
   13    * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
   14    * See the License for the specific language governing permissions and
   15    * limitations under the License.
   16    */
   17   package org.apache.commons.fileupload.servlet;
   18   
   19   import java.io.IOException;
   20   import java.util.List;
   21   
   22   import javax.servlet.http.HttpServletRequest;
   23   
   24   import org.apache.commons.fileupload.FileItemFactory;
   25   import org.apache.commons.fileupload.FileItemIterator;
   26   import org.apache.commons.fileupload.FileUpload;
   27   import org.apache.commons.fileupload.FileUploadException;
   28   
   29   /**
   30    * <p>High level API for processing file uploads.</p>
   31    *
   32    * <p>This class handles multiple files per single HTML widget, sent using
   33    * <code>multipart/mixed</code> encoding type, as specified by
   34    * <a href="http://www.ietf.org/rfc/rfc1867.txt">RFC 1867</a>.  Use {@link
   35    * #parseRequest(HttpServletRequest)} to acquire a list of {@link
   36    * org.apache.commons.fileupload.FileItem}s associated with a given HTML
   37    * widget.</p>
   38    *
   39    * <p>How the data for individual parts is stored is determined by the factory
   40    * used to create them; a given part may be in memory, on disk, or somewhere
   41    * else.</p>
   42    *
   43    * @author <a href="mailto:Rafal.Krzewski@e-point.pl">Rafal Krzewski</a>
   44    * @author <a href="mailto:dlr@collab.net">Daniel Rall</a>
   45    * @author <a href="mailto:jvanzyl@apache.org">Jason van Zyl</a>
   46    * @author <a href="mailto:jmcnally@collab.net">John McNally</a>
   47    * @author <a href="mailto:martinc@apache.org">Martin Cooper</a>
   48    * @author Sean C. Sullivan
   49    *
   50    * @version $Id: ServletFileUpload.java 479484 2006-11-27 01:06:53Z jochen $
   51    */
   52   public class ServletFileUpload extends FileUpload {
   53   
   54       // ---------------------------------------------------------- Class methods
   55   
   56   
   57       /**
   58        * Utility method that determines whether the request contains multipart
   59        * content.
   60        *
   61        * @param request The servlet request to be evaluated. Must be non-null.
   62        *
   63        * @return <code>true</code> if the request is multipart;
   64        *         <code>false</code> otherwise.
   65        */
   66       public static final boolean isMultipartContent(
   67               HttpServletRequest request) {
   68           if (!"post".equals(request.getMethod().toLowerCase())) {
   69               return false;
   70           }
   71           String contentType = request.getContentType();
   72           if (contentType == null) {
   73               return false;
   74           }
   75           if (contentType.toLowerCase().startsWith(MULTIPART)) {
   76               return true;
   77           }
   78           return false;
   79       }
   80   
   81   
   82       // ----------------------------------------------------------- Constructors
   83   
   84   
   85       /**
   86        * Constructs an uninitialised instance of this class. A factory must be
   87        * configured, using <code>setFileItemFactory()</code>, before attempting
   88        * to parse requests.
   89        *
   90        * @see FileUpload#FileUpload(FileItemFactory)
   91        */
   92       public ServletFileUpload() {
   93           super();
   94       }
   95   
   96   
   97       /**
   98        * Constructs an instance of this class which uses the supplied factory to
   99        * create <code>FileItem</code> instances.
  100        *
  101        * @see FileUpload#FileUpload()
  102        * @param fileItemFactory The factory to use for creating file items.
  103        */
  104       public ServletFileUpload(FileItemFactory fileItemFactory) {
  105           super(fileItemFactory);
  106       }
  107   
  108   
  109       // --------------------------------------------------------- Public methods
  110   
  111   
  112       /**
  113        * Processes an <a href="http://www.ietf.org/rfc/rfc1867.txt">RFC 1867</a>
  114        * compliant <code>multipart/form-data</code> stream.
  115        *
  116        * @param request The servlet request to be parsed.
  117        *
  118        * @return A list of <code>FileItem</code> instances parsed from the
  119        *         request, in the order that they were transmitted.
  120        *
  121        * @throws FileUploadException if there are problems reading/parsing
  122        *                             the request or storing files.
  123        */
  124       public List /* FileItem */ parseRequest(HttpServletRequest request)
  125       throws FileUploadException {
  126           return parseRequest(new ServletRequestContext(request));
  127       }
  128   
  129   
  130       /**
  131        * Processes an <a href="http://www.ietf.org/rfc/rfc1867.txt">RFC 1867</a>
  132        * compliant <code>multipart/form-data</code> stream.
  133        *
  134        * @param request The servlet request to be parsed.
  135        *
  136        * @return An iterator to instances of <code>FileItemStream</code>
  137        *         parsed from the request, in the order that they were
  138        *         transmitted.
  139        *
  140        * @throws FileUploadException if there are problems reading/parsing
  141        *                             the request or storing files.
  142        * @throws IOException An I/O error occurred. This may be a network
  143        *   error while communicating with the client or a problem while
  144        *   storing the uploaded content.
  145        */
  146       public FileItemIterator getItemIterator(HttpServletRequest request)
  147       throws FileUploadException, IOException {
  148           return super.getItemIterator(new ServletRequestContext(request));
  149       }
  150   }

Save This Page
Home » commons-fileupload-1.2-src » org.apache.commons » fileupload » servlet » [javadoc | source]