@MultipartConfig(location="/tmp", fileSizeThreshold=1024*1024,
    maxFileSize=1024*1024*5, maxRequestSize=1024*1024*5*5)
| 
  Java Platform, Enterprise Edition (Java EE) 8 The Java EE Tutorial  | 
  
| Previous | Next | Contents | 
Supporting file uploads is a very basic and common requirement for many
web applications. In prior versions of the Servlet specification,
implementing file upload required the use of external libraries or
complex input processing. The Java Servlet specification now helps to
provide a viable solution to the problem in a generic and portable way.
Java Servlet technology now supports file upload out of the box, so any
web container that implements the specification can parse multipart
requests and make mime attachments available through the
HttpServletRequest object.
A new annotation, javax.servlet.annotation.MultipartConfig, is used to
indicate that the servlet on which it is declared expects requests to be
made using the multipart/form-data MIME type. Servlets that are
annotated with @MultipartConfig can retrieve the Part components of
a given multipart/form-data request by calling the
request.getPart(String name) or request.getParts() method.
The @MultipartConfig annotation supports the following optional
attributes.
location: An absolute path to a directory on the file system. The
location attribute does not support a path relative to the application
context. This location is used to store files temporarily while the
parts are processed or when the size of the file exceeds the specified
fileSizeThreshold setting. The default location is "".
fileSizeThreshold: The file size in bytes after which the file will
be temporarily stored on disk. The default size is 0 bytes.
MaxFileSize: The maximum size allowed for uploaded files, in bytes.
If the size of any uploaded file is greater than this size, the web
container will throw an exception (IllegalStateException). The default
size is unlimited.
maxRequestSize: The maximum size allowed for a multipart/form-data
request, in bytes. The web container will throw an exception if the
overall size of all uploaded files exceeds this threshold. The default
size is unlimited.
For, example, the @MultipartConfig annotation could be constructed as
follows:
@MultipartConfig(location="/tmp", fileSizeThreshold=1024*1024,
    maxFileSize=1024*1024*5, maxRequestSize=1024*1024*5*5)
Instead of using the @MultipartConfig annotation to hard-code these
attributes in your file upload servlet, you could add the following as a
child element of the servlet configuration element in the web.xml
file:
<multipart-config>
    <location>/tmp</location>
    <max-file-size>20848820</max-file-size>
    <max-request-size>418018841</max-request-size>
    <file-size-threshold>1048576</file-size-threshold>
</multipart-config>
The Servlet specification supports two additional HttpServletRequest
methods:
Collection<Part> getParts()
Part getPart(String name)
The request.getParts() method returns collections of all Part
objects. If you have more than one input of type file, multiple Part
objects are returned. Because Part objects are named, the
getPart(String name) method can be used to access a particular Part.
Alternatively, the getParts() method, which returns an
Iterable<Part>, can be used to get an Iterator over all the Part
objects.
The javax.servlet.http.Part interface is a simple one, providing
methods that allow introspection of each Part. The methods do the
following:
Retrieve the name, size, and content-type of the Part
Query the headers submitted with a Part
Delete a Part
Write a Part out to disk
For example, the Part interface provides the write(String filename)
method to write the file with the specified name. The file can then be
saved in the directory that is specified with the location attribute
of the @MultipartConfig annotation or, in the case of the fileupload
example, in the location specified by the Destination field in the form.
| Previous | Next | Contents | 
 			
		Copyright © 2017, Oracle and/or its affiliates. All rights reserved.