1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 package org.apache.commons.fileupload.portlet;
18
19 import java.io.IOException;
20 import java.util.List;
21
22 import javax.portlet.ActionRequest;
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.FileUploadBase;
28 import org.apache.commons.fileupload.FileUploadException;
29
30 /**
31 * <p>High level API for processing file uploads.</p>
32 *
33 * <p>This class handles multiple files per single HTML widget, sent using
34 * <code>multipart/mixed</code> encoding type, as specified by
35 * <a href="http://www.ietf.org/rfc/rfc1867.txt">RFC 1867</a>. Use {@link
36 * #parseRequest(javax.servlet.http.HttpServletRequest)} to acquire a list
37 * of {@link org.apache.commons.fileupload.FileItem FileItems} associated
38 * with a given HTML widget.</p>
39 *
40 * <p>How the data for individual parts is stored is determined by the factory
41 * used to create them; a given part may be in memory, on disk, or somewhere
42 * else.</p>
43 *
44 * @author <a href="mailto:Rafal.Krzewski@e-point.pl">Rafal Krzewski</a>
45 * @author <a href="mailto:dlr@collab.net">Daniel Rall</a>
46 * @author <a href="mailto:jvanzyl@apache.org">Jason van Zyl</a>
47 * @author <a href="mailto:jmcnally@collab.net">John McNally</a>
48 * @author <a href="mailto:martinc@apache.org">Martin Cooper</a>
49 * @author Sean C. Sullivan
50 *
51 * @since FileUpload 1.1
52 *
53 * @version $Id: PortletFileUpload.java 479484 2006-11-27 01:06:53Z jochen $
54 */
55 public class PortletFileUpload extends FileUpload {
56
57
58
59
60 /**
61 * Utility method that determines whether the request contains multipart
62 * content.
63 *
64 * @param request The portlet request to be evaluated. Must be non-null.
65 *
66 * @return <code>true</code> if the request is multipart;
67 * <code>false</code> otherwise.
68 */
69 public static final boolean isMultipartContent(ActionRequest request) {
70 return FileUploadBase.isMultipartContent(
71 new PortletRequestContext(request));
72 }
73
74
75
76
77
78 /**
79 * Constructs an uninitialised instance of this class. A factory must be
80 * configured, using <code>setFileItemFactory()</code>, before attempting
81 * to parse requests.
82 *
83 * @see FileUpload#FileUpload(FileItemFactory)
84 */
85 public PortletFileUpload() {
86 super();
87 }
88
89
90 /**
91 * Constructs an instance of this class which uses the supplied factory to
92 * create <code>FileItem</code> instances.
93 *
94 * @see FileUpload#FileUpload()
95 * @param fileItemFactory The factory to use for creating file items.
96 */
97 public PortletFileUpload(FileItemFactory fileItemFactory) {
98 super(fileItemFactory);
99 }
100
101
102
103
104
105 /**
106 * Processes an <a href="http://www.ietf.org/rfc/rfc1867.txt">RFC 1867</a>
107 * compliant <code>multipart/form-data</code> stream.
108 *
109 * @param request The portlet request to be parsed.
110 *
111 * @return A list of <code>FileItem</code> instances parsed from the
112 * request, in the order that they were transmitted.
113 *
114 * @throws FileUploadException if there are problems reading/parsing
115 * the request or storing files.
116 */
117 public List
118 throws FileUploadException {
119 return parseRequest(new PortletRequestContext(request));
120 }
121
122 /**
123 * Processes an <a href="http://www.ietf.org/rfc/rfc1867.txt">RFC 1867</a>
124 * compliant <code>multipart/form-data</code> stream.
125 *
126 * @param request The portlet request to be parsed.
127 *
128 * @return An iterator to instances of <code>FileItemStream</code>
129 * parsed from the request, in the order that they were
130 * transmitted.
131 *
132 * @throws FileUploadException if there are problems reading/parsing
133 * the request or storing files.
134 * @throws IOException An I/O error occurred. This may be a network
135 * error while communicating with the client or a problem while
136 * storing the uploaded content.
137 */
138 public FileItemIterator getItemIterator(ActionRequest request)
139 throws FileUploadException, IOException {
140 return super.getItemIterator(new PortletRequestContext(request));
141 }
142 }