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 }