public abstract class

CommonsFileUploadSupport

extends Object
java.lang.Object
   ↳ org.springframework.web.multipart.commons.CommonsFileUploadSupport
Known Direct Subclasses

Class Overview

Base class for multipart resolvers that use Jakarta Commons FileUpload 1.2 or above.

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.

Summary

Nested Classes
class CommonsFileUploadSupport.MultipartParsingResult Holder for a Map of Spring MultipartFiles and a Map of multipart parameters. 
Fields
protected final Log logger
Public Constructors
CommonsFileUploadSupport()
Instantiate a new CommonsFileUploadSupport with its corresponding FileItemFactory and FileUpload instances.
Public Methods
DiskFileItemFactory getFileItemFactory()
Return the underlying org.apache.commons.fileupload.disk.DiskFileItemFactory instance.
FileUpload getFileUpload()
Return the underlying org.apache.commons.fileupload.FileUpload instance.
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 uploads are refused.
void setUploadTempDir(Resource uploadTempDir)
Set the temporary directory where uploaded files get stored.
Protected Methods
void cleanupFileItems(MultiValueMap<StringMultipartFile> multipartFiles)
Cleanup the Spring MultipartFiles created during multipart parsing, potentially holding temporary data on disk.
String getDefaultEncoding()
boolean isUploadTempDirSpecified()
DiskFileItemFactory newFileItemFactory()
Factory method for a Commons DiskFileItemFactory instance.
abstract FileUpload newFileUpload(FileItemFactory fileItemFactory)
Factory method for a Commons FileUpload instance.
CommonsFileUploadSupport.MultipartParsingResult parseFileItems(List<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.
FileUpload prepareFileUpload(String encoding)
Determine an appropriate FileUpload instance for the given encoding.
[Expand]
Inherited Methods
From class java.lang.Object

Fields

protected final Log logger

Public Constructors

public CommonsFileUploadSupport ()

Instantiate a new CommonsFileUploadSupport with its corresponding FileItemFactory and FileUpload instances.

Public Methods

public DiskFileItemFactory getFileItemFactory ()

Return the underlying org.apache.commons.fileupload.disk.DiskFileItemFactory instance. There is hardly any need to access this.

Returns
  • the underlying DiskFileItemFactory instance

public FileUpload getFileUpload ()

Return the underlying org.apache.commons.fileupload.FileUpload instance. There is hardly any need to access this.

Returns
  • the underlying FileUpload instance

public 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. Default is ISO-8859-1, according to the Servlet spec.

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.

Parameters
defaultEncoding the character encoding to use
See Also

public void setMaxInMemorySize (int maxInMemorySize)

Set the maximum allowed size (in bytes) before uploads are written to disk. Uploaded files will still be received past this amount, but they will not be stored in memory. Default is 10240, according to Commons FileUpload.

Parameters
maxInMemorySize the maximum in memory size allowed
See Also
  • org.apache.commons.fileupload.disk.DiskFileItemFactory#setSizeThreshold

public void setMaxUploadSize (long maxUploadSize)

Set the maximum allowed size (in bytes) before uploads are refused. -1 indicates no limit (the default).

Parameters
maxUploadSize the maximum upload size allowed
See Also
  • org.apache.commons.fileupload.FileUploadBase#setSizeMax

public void setUploadTempDir (Resource uploadTempDir)

Set the temporary directory where uploaded files get stored. Default is the servlet container's temporary directory for the web application.

Throws
IOException

Protected Methods

protected void cleanupFileItems (MultiValueMap<StringMultipartFile> multipartFiles)

Cleanup the Spring MultipartFiles created during multipart parsing, potentially holding temporary data on disk.

Deletes the underlying Commons FileItem instances.

Parameters
multipartFiles Collection of MultipartFile instances
See Also
  • org.apache.commons.fileupload.FileItem#delete()

protected String getDefaultEncoding ()

protected boolean isUploadTempDirSpecified ()

protected DiskFileItemFactory newFileItemFactory ()

Factory method for a Commons DiskFileItemFactory instance.

Default implementation returns a standard DiskFileItemFactory. Can be overridden to use a custom subclass, e.g. for testing purposes.

Returns
  • the new DiskFileItemFactory instance

protected abstract FileUpload newFileUpload (FileItemFactory fileItemFactory)

Factory method for a Commons FileUpload instance.

To be implemented by subclasses.

Parameters
fileItemFactory the Commons FileItemFactory to build upon
Returns
  • the Commons FileUpload instance

protected CommonsFileUploadSupport.MultipartParsingResult parseFileItems (List<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.

Parameters
fileItems the Commons FileIterms to parse
encoding the encoding to use for form fields
Returns
  • the Spring MultipartParsingResult
See Also
  • CommonsMultipartFile#CommonsMultipartFile(org.apache.commons.fileupload.FileItem)

protected FileUpload prepareFileUpload (String encoding)

Determine an appropriate FileUpload instance for the given 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.

Parameters
encoding the character encoding to use
Returns
  • an appropriate FileUpload instance.