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