org.apache.struts2.interceptor

## Class ActionFileUploadInterceptor

- java.lang.Object
- - org.apache.struts2.interceptor.AbstractInterceptor
  - - com.opensymphony.xwork2.interceptor.AbstractInterceptor
    - - org.apache.struts2.interceptor.AbstractFileUploadInterceptor
      - - org.apache.struts2.interceptor.ActionFileUploadInterceptor

- All Implemented Interfaces:
    Serializable, ConditionalInterceptor, Interceptor

      public class ActionFileUploadInterceptor
      extends AbstractFileUploadInterceptor

  Interceptor that is based off of `MultiPartRequestWrapper`, which is automatically applied for any request that includes a file when the support for multi-part request is enabled, see Disabling file upload.

  You can get access to these files by implementing `UploadedFilesAware` interface. The interceptor will then call `UploadedFilesAware.withUploadedFiles(List)` when there are files which were accepted during the upload process.

  This interceptor will add several field errors, assuming that the action implements `ValidationAware`. These error messages are based on several i18n values stored in struts-messages.properties, a default i18n file processed for all i18n requests. You can override the text of these messages by providing text for the following keys:

  - struts.messages.error.uploading - a general error that occurs when the file could not be uploaded
  - struts.messages.error.file.too.large - occurs when the uploaded file is too large
  - struts.messages.error.content.type.not.allowed - occurs when the uploaded file does not match the expected content types specified
  - struts.messages.error.file.extension.not.allowed - occurs when the uploaded file does not match the expected file extensions specified

  Interceptor parameters:

  - maximumSize (optional) - the maximum size (in bytes) that the interceptor will allow a file reference to be set on the action. Note, this is not related to the various properties found in struts.properties. Default to approximately 2MB.
  - allowedTypes (optional) - a comma separated list of content types (ie: text/html) that the interceptor will allow a file reference to be set on the action. If none is specified allow all types to be uploaded.
  - allowedExtensions (optional) - a comma separated list of file extensions (ie: .html) that the interceptor will allow a file reference to be set on the action. If none is specified allow all extensions to be uploaded.

  Example code:

       <action name="doUpload" class="com.example.UploadAction">
           <interceptor-ref name="actionFileUpload"/>
           <interceptor-ref name="basicStack"/>
           <result name="success">good_result.jsp</result>
       </action>

  You must set the encoding to `multipart/form-data` in the form where the user selects the file to upload.

         <s:form action="doUpload" method="post" enctype="multipart/form-data">
             <s:file name="upload" label="File"/>
             <s:submit/>
         </s:form>

  And then in your action code you'll have access to the File object if you provide setters according to the naming convention documented in the start.

        package com.example;

        import java.io.File;
        import com.opensymphony.xwork2.ActionSupport;
        import org.apache.struts2.action.UploadedFilesAware;

        public UploadAction extends ActionSupport implements UploadedFilesAware {
          private UploadedFile uploadedFile;
          private String contentType;
          private String fileName;
          private String originalName;

          @Override
          public void withUploadedFiles(List uploadedFiles) {
              if (!uploadedFiles.isEmpty() > 0) {
                  this.uploadedFile = uploadedFiles.get(0);
                  this.fileName = uploadedFile.getName();
                  this.contentType = uploadedFile.getContentType();
                  this.originalName = uploadedFile.getOriginalName();
              }
          }

          public String execute() {
             //...
             return SUCCESS;
          }
        }

  See Also:
    Serialized Form

- - ### Nested Class Summary

    - ### Nested classes/interfaces inherited from interface com.opensymphony.xwork2.interceptor.ConditionalInterceptor

      `ConditionalInterceptor.LegacyAdapter`

  - ### Field Summary

    Fields
    Modifier and Type | Field and Description
    --- | ---
    `protected static org.apache.logging.log4j.Logger` | `LOG`

    - ### Fields inherited from class org.apache.struts2.interceptor.AbstractFileUploadInterceptor

      `STRUTS_MESSAGES_BYPASS_REQUEST_KEY, STRUTS_MESSAGES_ERROR_CONTENT_TYPE_NOT_ALLOWED_KEY, STRUTS_MESSAGES_ERROR_FILE_EXTENSION_NOT_ALLOWED_KEY, STRUTS_MESSAGES_ERROR_FILE_TOO_LARGE_KEY, STRUTS_MESSAGES_ERROR_UPLOADING_KEY, STRUTS_MESSAGES_INVALID_CONTENT_TYPE_KEY, STRUTS_MESSAGES_INVALID_FILE_KEY`

  - ### Constructor Summary

    Constructors
    Constructor and Description
    `ActionFileUploadInterceptor()`

  - ### Method Summary

    All Methods Instance Methods Concrete Methods
    Modifier and Type | Method and Description
    --- | ---
    `String` | `intercept(ActionInvocation invocation)` Override to handle interception

    - ### Methods inherited from class org.apache.struts2.interceptor.AbstractFileUploadInterceptor

      `acceptFile, applyValidation, getTextMessage, getTextMessage, getTextProvider, isNonEmpty, setAllowedExtensions, setAllowedTypes, setContainer, setMatcher, setMaximumSize`

    - ### Methods inherited from class com.opensymphony.xwork2.interceptor.AbstractInterceptor

      `intercept, shouldIntercept, shouldIntercept`

    - ### Methods inherited from class org.apache.struts2.interceptor.AbstractInterceptor

      `destroy, init, setDisabled`

    - ### Methods inherited from class java.lang.Object

      `clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

    - ### Methods inherited from interface com.opensymphony.xwork2.interceptor.ConditionalInterceptor

      `adapt`

    - ### Methods inherited from interface com.opensymphony.xwork2.interceptor.Interceptor

      `adapt`

    - ### Methods inherited from interface org.apache.struts2.interceptor.Interceptor

      `destroy, init`

- - ### Field Detail

    - #### LOG

          protected static final org.apache.logging.log4j.Logger LOG

  - ### Constructor Detail

    - #### ActionFileUploadInterceptor

          public ActionFileUploadInterceptor()

  - ### Method Detail

    - #### intercept

          public String intercept(ActionInvocation invocation)
                           throws Exception

      Description copied from class: `AbstractInterceptor`
      Override to handle interception
      Specified by:
        `intercept` in class `AbstractInterceptor`
      Throws:
        `Exception`

Copyright © 2000–2026 Apache Software Foundation. All rights reserved.