public abstract class CommonsFileUploadSupport extends Object
Provides common configuration properties and parsing functionality for multipart requests, using a Map of Spring CommonsMultipartFile instances as representation of uploaded files and a String-based parameter Map as representation of uploaded form fields.
Subclasses implement concrete resolution strategies for Servlet or Portlet environments: see CommonsMultipartResolver and CommonsPortletMultipartResolver, respectively. This base class is not tied to either of those APIs, factoring out common functionality.
CommonsMultipartFile,
CommonsMultipartResolver,
CommonsPortletMultipartResolver| Modifier and Type | Class and Description |
|---|---|
protected static class |
CommonsFileUploadSupport.MultipartParsingResult
Holder for a Map of Spring MultipartFiles and a Map of
multipart parameters.
|
| Constructor and Description |
|---|
CommonsFileUploadSupport()
Instantiate a new CommonsFileUploadSupport with its
corresponding FileItemFactory and FileUpload instances.
|
| Modifier and Type | Method and Description |
|---|---|
protected void |
cleanupFileItems(MultiValueMap<String,MultipartFile> multipartFiles)
Cleanup the Spring MultipartFiles created during multipart parsing,
potentially holding temporary data on disk.
|
protected String |
getDefaultEncoding() |
org.apache.commons.fileupload.disk.DiskFileItemFactory |
getFileItemFactory()
Return the underlying
org.apache.commons.fileupload.disk.DiskFileItemFactory
instance. |
org.apache.commons.fileupload.FileUpload |
getFileUpload()
Return the underlying
org.apache.commons.fileupload.FileUpload
instance. |
protected boolean |
isUploadTempDirSpecified() |
protected org.apache.commons.fileupload.disk.DiskFileItemFactory |
newFileItemFactory()
Factory method for a Commons DiskFileItemFactory instance.
|
protected abstract org.apache.commons.fileupload.FileUpload |
newFileUpload(org.apache.commons.fileupload.FileItemFactory fileItemFactory)
Factory method for a Commons FileUpload instance.
|
protected CommonsFileUploadSupport.MultipartParsingResult |
parseFileItems(List<org.apache.commons.fileupload.FileItem> fileItems,
String encoding)
Parse the given List of Commons FileItems into a Spring MultipartParsingResult,
containing Spring MultipartFile instances and a Map of multipart parameter.
|
protected org.apache.commons.fileupload.FileUpload |
prepareFileUpload(String encoding)
Determine an appropriate FileUpload instance for the given encoding.
|
void |
setDefaultEncoding(String defaultEncoding)
Set the default character encoding to use for parsing requests,
to be applied to headers of individual parts and to form fields.
|
void |
setMaxInMemorySize(int maxInMemorySize)
Set the maximum allowed size (in bytes) before uploads are written to disk.
|
void |
setMaxUploadSize(long maxUploadSize)
Set the maximum allowed size (in bytes) before an upload gets rejected.
|
void |
setMaxUploadSizePerFile(long maxUploadSizePerFile)
Set the maximum allowed size (in bytes) for each individual file before
an upload gets rejected.
|
void |
setUploadTempDir(Resource uploadTempDir)
Set the temporary directory where uploaded files get stored.
|
protected final Log logger
public CommonsFileUploadSupport()
public org.apache.commons.fileupload.disk.DiskFileItemFactory getFileItemFactory()
org.apache.commons.fileupload.disk.DiskFileItemFactory
instance. There is hardly any need to access this.public org.apache.commons.fileupload.FileUpload getFileUpload()
org.apache.commons.fileupload.FileUpload
instance. There is hardly any need to access this.public void setMaxUploadSize(long maxUploadSize)
maxUploadSize - the maximum upload size allowedFileUploadBase.setSizeMax(long)public void setMaxUploadSizePerFile(long maxUploadSizePerFile)
maxUploadSizePerFile - the maximum upload size per fileFileUploadBase.setFileSizeMax(long)public void setMaxInMemorySize(int maxInMemorySize)
maxInMemorySize - the maximum in memory size allowedDiskFileItemFactory.setSizeThreshold(int)public void setDefaultEncoding(String defaultEncoding)
If the request specifies a character encoding itself, the request
encoding will override this setting. This also allows for generically
overriding the character encoding in a filter that invokes the
ServletRequest.setCharacterEncoding method.
defaultEncoding - the character encoding to useServletRequest.getCharacterEncoding(),
ServletRequest.setCharacterEncoding(java.lang.String),
WebUtils.DEFAULT_CHARACTER_ENCODING,
FileUploadBase.setHeaderEncoding(java.lang.String)protected String getDefaultEncoding()
public void setUploadTempDir(Resource uploadTempDir) throws IOException
IOExceptionWebUtils.TEMP_DIR_CONTEXT_ATTRIBUTEprotected boolean isUploadTempDirSpecified()
protected org.apache.commons.fileupload.disk.DiskFileItemFactory newFileItemFactory()
Default implementation returns a standard DiskFileItemFactory. Can be overridden to use a custom subclass, e.g. for testing purposes.
protected abstract org.apache.commons.fileupload.FileUpload newFileUpload(org.apache.commons.fileupload.FileItemFactory fileItemFactory)
To be implemented by subclasses.
fileItemFactory - the Commons FileItemFactory to build uponprotected org.apache.commons.fileupload.FileUpload prepareFileUpload(String encoding)
Default implementation returns the shared FileUpload instance if the encoding matches, else creates a new FileUpload instance with the same configuration other than the desired encoding.
encoding - the character encoding to useprotected CommonsFileUploadSupport.MultipartParsingResult parseFileItems(List<org.apache.commons.fileupload.FileItem> fileItems, String encoding)
fileItems - the Commons FileIterms to parseencoding - the encoding to use for form fieldsCommonsMultipartFile.CommonsMultipartFile(org.apache.commons.fileupload.FileItem)protected void cleanupFileItems(MultiValueMap<String,MultipartFile> multipartFiles)
Deletes the underlying Commons FileItem instances.
multipartFiles - Collection of MultipartFile instancesFileItem.delete()