Class CommonsMultipartRequestHandler

java.lang.Object
org.apache.struts.upload.CommonsMultipartRequestHandler
All Implemented Interfaces:
MultipartRequestHandler

public class CommonsMultipartRequestHandler extends Object implements MultipartRequestHandler
This class implements the MultipartRequestHandler interface by providing a wrapper around the Jakarta Commons FileUpload library.
Since:
Struts 1.1
  • Field Details

    • DEFAULT_SIZE_MAX

      public static final long DEFAULT_SIZE_MAX
      The 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_MAX
      The 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_LEN
      The 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_THRESHOLD
      The 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

      public ActionServlet getServlet()
      Retrieves the servlet with which this handler is associated.
      Specified by:
      getServlet in interface MultipartRequestHandler
      Returns:
      The associated servlet.
    • setServlet

      public void setServlet(ActionServlet servlet)
      Sets the servlet with which this handler is associated.
      Specified by:
      setServlet in interface MultipartRequestHandler
      Parameters:
      servlet - The associated servlet.
    • getMapping

      public ActionMapping getMapping()
      Retrieves the action mapping with which this handler is associated.
      Specified by:
      getMapping in interface MultipartRequestHandler
      Returns:
      The associated action mapping.
    • setMapping

      public void setMapping(ActionMapping mapping)
      Sets the action mapping with which this handler is associated.
      Specified by:
      setMapping in interface MultipartRequestHandler
      Parameters:
      mapping - The associated action mapping.
    • handleRequest

      public void handleRequest(HttpServletRequest request) throws ServletException
      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 FileUpload FileItem instances to Struts FormFile instances.
      Specified by:
      handleRequest in interface MultipartRequestHandler
      Parameters:
      request - The multipart request to be processed.
      Throws:
      ServletException - if an unrecoverable error occurs.
    • getTextElements

      public HashMap<String,String[]> getTextElements()
      Returns a hash map containing the text (that is, non-file) request parameters.
      Specified by:
      getTextElements in interface MultipartRequestHandler
      Returns:
      The text request parameters.
    • getFileElements

      public HashMap<String,FormFile[]> getFileElements()
      Returns a hash map containing the file (that is, non-text) request parameters.
      Specified by:
      getFileElements in interface MultipartRequestHandler
      Returns:
      The file request parameters.
      See Also:
    • getAllElements

      public HashMap<String,Object> getAllElements()
      Returns a hash map containing both text and file request parameters.
      Specified by:
      getAllElements in interface MultipartRequestHandler
      Returns:
      The text and file request parameters.
    • rollback

      public void rollback()
      Cleans up when a problem occurs during request processing.
      Specified by:
      rollback in interface MultipartRequestHandler
    • finish

      public void finish()
      Cleans up at the end of a request.
      Specified by:
      finish in interface MultipartRequestHandler
    • clearInputStream

      protected void clearInputStream(HttpServletRequest request)
      Finishes reading the input stream from an aborted upload. Fix for STR-2700 to prevent Window machines from hanging.
    • getSizeMax

      protected long getSizeMax(ModuleConfig mc)
      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

      protected long getFileSizeMax(ModuleConfig mc)
      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

      protected long getMaxStringLen(ModuleConfig mc)
      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

      protected long getSizeThreshold(ModuleConfig mc)
      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

      protected long convertSizeToBytes(String sizeType, String sizeString, long defaultSize)
      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

      protected long getFileCountMax(ModuleConfig mc)
      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

      protected File getRepositoryFile(ModuleConfig mc)
      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.
      1. A temp dir explicitly defined either using the tempDir servlet init param, or the tempDir attribute of the <controller> element in the Struts config file.
      2. The container-specified temp dir, obtained from the jakarta.servlet.context.tempdir servlet context attribute.
      3. 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.
    • addTextParameter

      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. 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

      protected String getTextValue(HttpServletRequest request, FileItem<?> item)
      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

      protected 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.
      Parameters:
      item - The file item for the parameter to add.