kusalk commented on code in PR #223:
URL: https://github.com/apache/struts-site/pull/223#discussion_r1447084616
##########
source/core-developers/file-upload.md:
##########
@@ -51,7 +55,35 @@ example:
</s:form>
```
-The fileUpload interceptor will use setter injection to insert the uploaded
file and related data into your Action
+The actionFileUpload interceptor will use a dedicated interface
`org.apache.struts2.action.UploadedFilesAware` to transfer
+information and content of uploaded file. Your action should implement the
interface to receive the uploaded file:
+
+```java
+public class UploadAction extends ActionSupport implements UploadedFilesAware {
+
+ private UploadedFile uploadedFile;
+ private String contentType;
+ private String fileName;
+ private String originalName;
+
+ @Override
+ public void withUploadedFiles(List<UploadedFile> uploadedFiles) {
+ if (!uploadedFiles.isEmpty() > 0) {
Review Comment:
Same here
##########
source/core-developers/action-file-upload-interceptor.md:
##########
@@ -0,0 +1,111 @@
+---
+layout: default
+title: Action File Upload Interceptor
+parent:
+ title: Interceptors
+ url: interceptors
+---
+
+# Action File Upload Interceptor
+
+> Available since Struts 6.4.0 as replacement for [File Upload
Interceptor](file-upload-interceptor)
+
+See [this page](file-upload) for more examples and advanced configuration.
+
+Interceptor that is based off of `MultiPartRequestWrapper`, which is
automatically applied for any request that includes
+a file. If an action implements `org.apache.struts2.action.UploadedFilesAware`
interface, the interceptor will pass
+information and content of uploaded files using the callback method
`withUploadedFiles(List<UploadedFile>)`.
+
+See the example code section.
+
+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
+
+## 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 <b>not</b> 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.
+
+## Extending the Interceptor
+
+You can extend this interceptor and override the acceptFile method to provide
more control over which files are supported
+and which are not.
+
+## Examples
+
+**Example action mapping:**
+
+```xml
+ <action name="doUpload" class="com.example.UploadAction">
+ <interceptor-ref name="actionFileUpload"/>
+ <interceptor-ref name="basicStack"/>
+ <result name="success">good_result.jsp</result>
+ </action>
+
+```
+
+Notice the interceptor configuration in the preceding example\.
+
+**Example JSP form tags:**
+
+```xml
+ <s:form action="doUpload" method="post" enctype="multipart/form-data">
+ <s:file name="upload" label="File"/>
+ <s:submit/>
+ </s:form>
+
+```
+
+You must set the encoding to <code>multipart/form-data</code> in the form
where the user selects the file to upload.
+
+**Example Action class:**
+
+```java
+public class UploadAction extends ActionSupport implements UploadedFilesAware {
+ private UploadedFile uploadedFile;
+ private String contentType;
+ private String fileName;
+ private String originalName;
+
+ @Override
+ public void withUploadedFiles(List<UploadedFile> uploadedFiles) {
+ if (!uploadedFiles.isEmpty() > 0) {
Review Comment:
Think you can drop the `> 0`
##########
source/core-developers/file-upload.md:
##########
@@ -21,11 +24,13 @@ than the temporary directory and the directories that
belong to your web applica
The Struts 2 framework leverages the Commons FileUpload library as a based
library to support file upload in the framework.
The library is included in a base Struts 2 distribution.
+> NOTE: Since Struts 6.4.0 the `FileUploadInterceptor` is deprecated and you
should use `ActionFileUploadInterceptor` instead!
+
## Basic Usage
-The `org.apache.struts2.interceptor.FileUploadInterceptor` class is included
as part of the `defaultStack`. As long as
-the required libraries are added to your project you will be able to take
advantage of the Struts 2 file upload
-capability. Configure an Action mapping for your Action class as you typically
would.
+The `org.apache.struts2.interceptor.FileUploadInterceptor` and
`org.apache.struts2.interceptor.ActionFileUploadInterceptor`
+classes is included as part of the `defaultStack`. As long as the required
libraries are added to your project you will be able
Review Comment:
`classes **are** included`
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: [email protected]
For queries about this service, please contact Infrastructure at:
[email protected]