Package org.apache.commons.fileupload
A component for handling HTML file uploads as specified by RFC 1867. This component provides support for uploads within both servlets (JSR 53) and portlets (JSR 168).
While this package provides the generic functionality for file uploads,
these classes are not typically used directly. Instead, normal usage
involves one of the provided extensions of
FileUpload
such as
ServletFileUpload
or
PortletFileUpload
,
together with a factory for
FileItem
instances,
such as
DiskFileItemFactory
.
The following is a brief example of typical usage in a servlet, storing the uploaded files on disk.
public void doPost(HttpServletRequest req, HttpServletResponse res) { DiskFileItemFactory factory = new DiskFileItemFactory(); // maximum size that will be stored in memory factory.setSizeThreshold(4096); // the location for saving data that is larger than getSizeThreshold() factory.setRepository(new File("/tmp")); ServletFileUpload upload = new ServletFileUpload(factory); // maximum size before a FileUploadException will be thrown upload.setSizeMax(1000000); List fileItems = upload.parseRequest(req); // assume we know there are two files. The first file is a small // text file, the second is unknown and is written to a file on // the server Iterator i = fileItems.iterator(); String comment = ((FileItem)i.next()).getString(); FileItem fi = (FileItem)i.next(); // filename on the client String fileName = fi.getName(); // save comment and filename to database ... // write the file fi.write(new File("/www/uploads/", fileName)); }
In the example above, the first file is loaded into memory as a
String
. Before calling the getString
method,
the data may have been in memory or on disk depending on its size. The
second file we assume it will be large and therefore never explicitly
load it into memory, though if it is less than 4096 bytes it will be
in memory before it is written to its final location. When writing to
the final location, if the data is larger than the threshold, an attempt
is made to rename the temporary file to the given location. If it cannot
be renamed, it is streamed to the new location.
Please see the FileUpload User Guide for further details and examples of how to use this package.
-
ClassDescriptionDeprecated.Deprecated.1.1 Use
DiskFileItemFactory
instead.Deprecated.1.1 UseServletFileUpload
together withDiskFileItemFactory
instead.This exception is thrown if a request contains more files than the specified limit.This class represents a file or form item that was received within amultipart/form-data
POST request.A factory interface for creatingFileItem
instances.This class provides support for accessing the headers for a file or form item that was received within amultipart/form-data
POST request.Interface that will indicate thatFileItem
orFileItemStream
implementations will accept the headers read for the item.An iterator, as returned byFileUploadBase.getItemIterator(RequestContext)
.This interface provides access to a file or form item that was received within amultipart/form-data
POST request.This exception is thrown, if an attempt is made to read data from theInputStream
, which has been returned byFileItemStream.openStream()
, afterIterator.hasNext()
has been invoked on the iterator, which created theFileItemStream
.High level API for processing file uploads.High level API for processing file uploads.Thrown to indicate that A files size exceeds the configured maximum.This exception is thrown for hiding an innerFileUploadException
in anIOException
.Thrown to indicate that the request is not a multipart request.Thrown to indicate an IOException.Thrown to indicate that the request size exceeds the configured maximum.Deprecated.1.2 As of commons-fileupload 1.2, the presence of a content-length header is no longer required.Exception for errors encountered while processing the request.This exception is thrown in case of an invalid file name.Low level API for processing file uploads.Thrown upon attempt of setting an invalid boundary token.Thrown to indicate that the input stream fails to follow the required syntax.Internal class, which is used to invoke theProgressListener
.A simple parser intended to parse sequences of name/value pairs.TheProgressListener
may be used to display a progress bar or do stuff like that.Abstracts access to the request information needed for file uploads.Enhanced access to the request information needed for file uploads, which fixes the Content Length data access inRequestContext
.
DiskFileItem
instead.