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.
CommonsMultipartFile,
CommonsMultipartResolver| 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 CommonsMultipartFile |
createMultipartFile(org.apache.commons.fileupload.FileItem fileItem)
Create a
CommonsMultipartFile wrapper for the given Commons FileItem. |
protected String |
getDefaultEncoding()
Determine the default encoding to use for parsing requests.
|
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()
Return the temporary directory where uploaded files get stored.
|
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 |
setPreserveFilename(boolean preserveFilename)
Set whether to preserve the filename as sent by the client, not stripping off
path information in
CommonsMultipartFile.getOriginalFilename(). |
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()
setDefaultEncoding(java.lang.String)public void setUploadTempDir(Resource uploadTempDir) throws IOException
IOExceptionWebUtils.TEMP_DIR_CONTEXT_ATTRIBUTEprotected boolean isUploadTempDirSpecified()
public void setPreserveFilename(boolean preserveFilename)
CommonsMultipartFile.getOriginalFilename().
Default is "false", stripping off path information that may prefix the actual filename e.g. from Opera. Switch this to "true" for preserving the client-specified filename as-is, including potential path separators.
MultipartFile.getOriginalFilename(),
CommonsMultipartFile.setPreserveFilename(boolean)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(@Nullable 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 FileItems to parseencoding - the encoding to use for form fieldsCommonsMultipartFile.CommonsMultipartFile(org.apache.commons.fileupload.FileItem)protected CommonsMultipartFile createMultipartFile(org.apache.commons.fileupload.FileItem fileItem)
CommonsMultipartFile wrapper for the given Commons FileItem.fileItem - the Commons FileItem to wrapsetPreserveFilename(boolean),
CommonsMultipartFile.setPreserveFilename(boolean)protected void cleanupFileItems(MultiValueMap<String,MultipartFile> multipartFiles)
Deletes the underlying Commons FileItem instances.
multipartFiles - a Collection of MultipartFile instancesFileItem.delete()