Package org.apache.struts.upload
Class CommonsMultipartRequestHandler
java.lang.Object
org.apache.struts.upload.CommonsMultipartRequestHandler
- All Implemented Interfaces:
MultipartRequestHandler
This class implements the
MultipartRequestHandler
interface by
providing a wrapper around the Jakarta Commons FileUpload library.- Since:
- Struts 1.1
-
Field Summary
Modifier and TypeFieldDescriptionstatic final long
The default value for the maximum allowable size, in bytes, of an uploaded file.static final long
The default value for the maximum length of a string parameter, in bytes, in a multipart request.static final long
The default value for the maximum allowable size, in bytes, of an uploaded file.static final int
The default value for the threshold which determines whether an uploaded file will be written to disk or cached in memory.Fields inherited from interface org.apache.struts.upload.MultipartRequestHandler
ATTRIBUTE_MAX_BYTE_LENGTH_EXCEEDED, ATTRIBUTE_MAX_FILE_COUNT_EXCEEDED, ATTRIBUTE_MAX_LENGTH_EXCEEDED, ATTRIBUTE_MAX_STRING_LENGTH_EXCEEDED
-
Constructor Summary
-
Method Summary
Modifier and TypeMethodDescriptionprotected void
addFileParameter
(FileItem<?> item) Adds a file parameter to the set of file parameters for this request and also to the list of all parameters.protected void
addTextParameter
(HttpServletRequest request, long maxStringLen, FileItem<?> item) Adds a regular text parameter to the set of text parameters for this request and also to the list of all parameters.protected void
clearInputStream
(HttpServletRequest request) Finishes reading the input stream from an aborted upload.protected long
convertSizeToBytes
(String sizeType, String sizeString, long defaultSize) Converts a size value from a string representation to its numeric value.void
finish()
Cleans up at the end of a request.Returns a hash map containing both text and file request parameters.protected long
Returns the maximum permitted number of files that may be uploaded in a single request.Returns a hash map containing the file (that is, non-text) request parameters.protected long
Returns the maximum allowable file-size, in bytes, of an uploaded file.Retrieves the action mapping with which this handler is associated.protected long
Returns the maximum allowable length, in bytes, of a string parameter in a multipart request.protected File
Returns the path to the temporary directory to be used for uploaded files which are written to disk.Retrieves the servlet with which this handler is associated.protected long
Returns the maximum allowed size of a complete request.protected long
Returns the size threshold which determines whether an uploaded file will be written to disk or cached in memory.Returns a hash map containing the text (that is, non-file) request parameters.protected String
getTextValue
(HttpServletRequest request, FileItem<?> item) Gets the regular text parameter of the item.void
handleRequest
(HttpServletRequest request) Parses the input stream and partitions the parsed items into a set of form fields and a set of file items.void
rollback()
Cleans up when a problem occurs during request processing.void
setMapping
(ActionMapping mapping) Sets the action mapping with which this handler is associated.void
setServlet
(ActionServlet servlet) Sets the servlet with which this handler is associated.
-
Field Details
-
DEFAULT_SIZE_MAX
public static final long DEFAULT_SIZE_MAXThe default value for the maximum allowable size, in bytes, of an uploaded file. The value is equivalent to 250MB.- See Also:
-
DEFAULT_FILE_SIZE_MAX
public static final long DEFAULT_FILE_SIZE_MAXThe default value for the maximum allowable size, in bytes, of an uploaded file. The value is equivalent to 250MB.- See Also:
-
DEFAULT_MAX_STRING_LEN
public static final long DEFAULT_MAX_STRING_LENThe default value for the maximum length of a string parameter, in bytes, in a multipart request. The value is equivalent to 4KB.- See Also:
-
DEFAULT_SIZE_THRESHOLD
public static final int DEFAULT_SIZE_THRESHOLDThe default value for the threshold which determines whether an uploaded file will be written to disk or cached in memory. The value is equivalent to 250KB.- See Also:
-
-
Constructor Details
-
CommonsMultipartRequestHandler
public CommonsMultipartRequestHandler()
-
-
Method Details
-
getServlet
Retrieves the servlet with which this handler is associated.- Specified by:
getServlet
in interfaceMultipartRequestHandler
- Returns:
- The associated servlet.
-
setServlet
Sets the servlet with which this handler is associated.- Specified by:
setServlet
in interfaceMultipartRequestHandler
- Parameters:
servlet
- The associated servlet.
-
getMapping
Retrieves the action mapping with which this handler is associated.- Specified by:
getMapping
in interfaceMultipartRequestHandler
- Returns:
- The associated action mapping.
-
setMapping
Sets the action mapping with which this handler is associated.- Specified by:
setMapping
in interfaceMultipartRequestHandler
- Parameters:
mapping
- The associated action mapping.
-
handleRequest
Parses the input stream and partitions the parsed items into a set of form fields and a set of file items. In the process, the parsed items are translated from Commons FileUploadFileItem
instances to StrutsFormFile
instances.- Specified by:
handleRequest
in interfaceMultipartRequestHandler
- Parameters:
request
- The multipart request to be processed.- Throws:
ServletException
- if an unrecoverable error occurs.
-
getTextElements
Returns a hash map containing the text (that is, non-file) request parameters.- Specified by:
getTextElements
in interfaceMultipartRequestHandler
- Returns:
- The text request parameters.
-
getFileElements
Returns a hash map containing the file (that is, non-text) request parameters.- Specified by:
getFileElements
in interfaceMultipartRequestHandler
- Returns:
- The file request parameters.
- See Also:
-
getAllElements
Returns a hash map containing both text and file request parameters.- Specified by:
getAllElements
in interfaceMultipartRequestHandler
- Returns:
- The text and file request parameters.
-
rollback
public void rollback()Cleans up when a problem occurs during request processing.- Specified by:
rollback
in interfaceMultipartRequestHandler
-
finish
public void finish()Cleans up at the end of a request.- Specified by:
finish
in interfaceMultipartRequestHandler
-
clearInputStream
Finishes reading the input stream from an aborted upload. Fix for STR-2700 to prevent Window machines from hanging. -
getSizeMax
Returns the maximum allowed size of a complete request. The value is obtained from the current module's controller configuration.- Parameters:
mc
- The current module's configuration.- Returns:
- The maximum allowable size of a complete request, in bytes.
-
getFileSizeMax
Returns the maximum allowable file-size, in bytes, of an uploaded file. The value is obtained from the current module's controller configuration.- Parameters:
mc
- The current module's configuration.- Returns:
- The maximum allowable file size, in bytes.
-
getMaxStringLen
Returns the maximum allowable length, in bytes, of a string parameter in a multipart request. The value is obtained from the current module's controller configuration.- Parameters:
mc
- The current module's configuration.- Returns:
- The maximum allowable length of a string parameter, in bytes.
-
getSizeThreshold
Returns the size threshold which determines whether an uploaded file will be written to disk or cached in memory.- Parameters:
mc
- The current module's configuration.- Returns:
- The size threshold, in bytes.
-
convertSizeToBytes
Converts a size value from a string representation to its numeric value. The string must be of the form nnnm, where nnn is an arbitrary decimal value, and m is a multiplier. The multiplier must be one of 'K', 'M' and 'G', representing kilobytes, megabytes and gigabytes respectively.If the size value cannot be converted, for example due to invalid syntax, the supplied default is returned instead.
- Parameters:
sizeType
- The type of the size. Is's used for logging-message.sizeString
- The string representation of the size to be converted.defaultSize
- The value to be returned if the string is invalid.- Returns:
- The actual size in bytes.
-
getFileCountMax
Returns the maximum permitted number of files that may be uploaded in a single request. A value of -1 indicates no maximum. The value is obtained from the current module's controller configuration.- Parameters:
mc
- The current module's configuration.- Returns:
- The maximum allowable file size, in bytes.
-
getRepositoryFile
Returns the path to the temporary directory to be used for uploaded files which are written to disk. The directory used is determined from the first of the following to be non-empty.- A temp dir explicitly defined either using the
tempDir
servlet init param, or thetempDir
attribute of the <controller> element in the Struts config file. - The container-specified temp dir, obtained from the
jakarta.servlet.context.tempdir
servlet context attribute. - The temp dir specified by the
java.io.tmpdir
system property.
- Parameters:
mc
- The module config instance for which the path should be determined.- Returns:
- The path to the directory to be used to store uploaded files.
- A temp dir explicitly defined either using the
-
addTextParameter
Adds a regular text parameter to the set of text parameters for this request and also to the list of all parameters. Handles the case of multiple values for the same parameter by using an array for the parameter value.- Parameters:
request
- The request in which the parameter was specified.maxStringLen
- The maximum allowable length of a string parameter.item
- The file item for the parameter to add.
-
getTextValue
Gets the regular text parameter of the item.- Parameters:
request
- The request in which the parameter was specified.item
- The file item for the parameter.- Returns:
- the value of the
item
-
addFileParameter
Adds a file parameter to the set of file parameters for this request and also to the list of all parameters.- Parameters:
item
- The file item for the parameter to add.
-