View Javadoc

    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;
    18
    19  import java.io.File;
    20  import java.util.List;
    21  import javax.servlet.http.HttpServletRequest;
    22
    23  /**
    24   * <p>High level API for processing file uploads.</p>
    25   *
    26   * <p>This class handles multiple files per single HTML widget, sent using
    27   * <code>multipart/mixed</code> encoding type, as specified by
    28   * <a href="http://www.ietf.org/rfc/rfc1867.txt">RFC 1867</a>.  Use {@link
    29   * #parseRequest(HttpServletRequest)} to acquire a list of {@link
    30   * org.apache.commons.fileupload.FileItem}s associated with a given HTML
    31   * widget.</p>
    32   *
    33   * <p>Individual parts will be stored in temporary disk storage or in memory,
    34   * depending on their size, and will be available as {@link
    35   * org.apache.commons.fileupload.FileItem}s.</p>
    36   *
    37   * @deprecated 1.1 Use <code>ServletFileUpload</code> together with
    38   *             <code>DiskFileItemFactory</code> instead.
    39   */
    40  @Deprecated
    41  public class DiskFileUpload
    42      extends FileUploadBase {
    43
    44      // ----------------------------------------------------------- Data members
    45
    46      /**
    47       * The factory to use to create new form items.
    48       */
    49      private DefaultFileItemFactory fileItemFactory;
    50
    51      // ----------------------------------------------------------- Constructors
    52
    53      /**
    54       * Constructs an instance of this class which uses the default factory to
    55       * create <code>FileItem</code> instances.
    56       *
    57       * @see #DiskFileUpload(DefaultFileItemFactory fileItemFactory)
    58       *
    59       * @deprecated 1.1 Use <code>FileUpload</code> instead.
    60       */
    61      @Deprecated
    62      public DiskFileUpload() {
    63          super();
    64          this.fileItemFactory = new DefaultFileItemFactory();
    65      }
    66
    67      /**
    68       * Constructs an instance of this class which uses the supplied factory to
    69       * create <code>FileItem</code> instances.
    70       *
    71       * @see #DiskFileUpload()
    72       * @param fileItemFactory The file item factory to use.
    73       *
    74       * @deprecated 1.1 Use <code>FileUpload</code> instead.
    75       */
    76      @Deprecated
    77      public DiskFileUpload(DefaultFileItemFactory fileItemFactory) {
    78          super();
    79          this.fileItemFactory = fileItemFactory;
    80      }
    81
    82      // ----------------------------------------------------- Property accessors
    83
    84      /**
    85       * Returns the factory class used when creating file items.
    86       *
    87       * @return The factory class for new file items.
    88       *
    89       * @deprecated 1.1 Use <code>FileUpload</code> instead.
    90       */
    91      @Override
    92      @Deprecated
    93      public FileItemFactory getFileItemFactory() {
    94          return fileItemFactory;
    95      }
    96
    97      /**
    98       * Sets the factory class to use when creating file items. The factory must
    99       * be an instance of <code>DefaultFileItemFactory</code> or a subclass
    100      * thereof, or else a <code>ClassCastException</code> will be thrown.
    101      *
    102      * @param factory The factory class for new file items.
    103      *
    104      * @deprecated 1.1 Use <code>FileUpload</code> instead.
    105      */
    106     @Override
    107     @Deprecated
    108     public void setFileItemFactory(FileItemFactory factory) {
    109         this.fileItemFactory = (DefaultFileItemFactory) factory;
    110     }
    111
    112     /**
    113      * Returns the size threshold beyond which files are written directly to
    114      * disk.
    115      *
    116      * @return The size threshold, in bytes.
    117      *
    118      * @see #setSizeThreshold(int)
    119      *
    120      * @deprecated 1.1 Use <code>DiskFileItemFactory</code> instead.
    121      */
    122     @Deprecated
    123     public int getSizeThreshold() {
    124         return fileItemFactory.getSizeThreshold();
    125     }
    126
    127     /**
    128      * Sets the size threshold beyond which files are written directly to disk.
    129      *
    130      * @param sizeThreshold The size threshold, in bytes.
    131      *
    132      * @see #getSizeThreshold()
    133      *
    134      * @deprecated 1.1 Use <code>DiskFileItemFactory</code> instead.
    135      */
    136     @Deprecated
    137     public void setSizeThreshold(int sizeThreshold) {
    138         fileItemFactory.setSizeThreshold(sizeThreshold);
    139     }
    140
    141     /**
    142      * Returns the location used to temporarily store files that are larger
    143      * than the configured size threshold.
    144      *
    145      * @return The path to the temporary file location.
    146      *
    147      * @see #setRepositoryPath(String)
    148      *
    149      * @deprecated 1.1 Use <code>DiskFileItemFactory</code> instead.
    150      */
    151     @Deprecated
    152     public String getRepositoryPath() {
    153         return fileItemFactory.getRepository().getPath();
    154     }
    155
    156     /**
    157      * Sets the location used to temporarily store files that are larger
    158      * than the configured size threshold.
    159      *
    160      * @param repositoryPath The path to the temporary file location.
    161      *
    162      * @see #getRepositoryPath()
    163      *
    164      * @deprecated 1.1 Use <code>DiskFileItemFactory</code> instead.
    165      */
    166     @Deprecated
    167     public void setRepositoryPath(String repositoryPath) {
    168         fileItemFactory.setRepository(new File(repositoryPath));
    169     }
    170
    171     // --------------------------------------------------------- Public methods
    172
    173     /**
    174      * Processes an <a href="http://www.ietf.org/rfc/rfc1867.txt">RFC 1867</a>
    175      * compliant <code>multipart/form-data</code> stream. If files are stored
    176      * on disk, the path is given by <code>getRepository()</code>.
    177      *
    178      * @param req           The servlet request to be parsed. Must be non-null.
    179      * @param sizeThreshold The max size in bytes to be stored in memory.
    180      * @param sizeMax       The maximum allowed upload size, in bytes.
    181      * @param path          The location where the files should be stored.
    182      *
    183      * @return A list of <code>FileItem</code> instances parsed from the
    184      *         request, in the order that they were transmitted.
    185      *
    186      * @throws FileUploadException if there are problems reading/parsing
    187      *                             the request or storing files.
    188      *
    189      * @deprecated 1.1 Use <code>ServletFileUpload</code> instead.
    190      */
    191     @Deprecated
    192     public List<FileItem> parseRequest(HttpServletRequest req,
    193                                             int sizeThreshold,
    194                                             long sizeMax, String path)
    195         throws FileUploadException {
    196         setSizeThreshold(sizeThreshold);
    197         setSizeMax(sizeMax);
    198         setRepositoryPath(path);
    199         return parseRequest(req);
    200     }
    201
    202 }