This is an automated email from the ASF dual-hosted git repository.
lukaszlenart pushed a commit to branch release/struts-6-8-x
in repository https://gitbox.apache.org/repos/asf/struts.git
The following commit(s) were added to refs/heads/release/struts-6-8-x by this
push:
new b490e2c2f Merge pull request #1445 from ryanmurf/multipartCleanup
b490e2c2f is described below
commit b490e2c2fc7640ab707a89a2e67083450db74dc9
Author: Ryan J Murphy <[email protected]>
AuthorDate: Thu Dec 11 04:48:13 2025 -0700
Merge pull request #1445 from ryanmurf/multipartCleanup
WW-5573 Multipart stream file cleanup
---
.../dispatcher/multipart/JakartaMultiPartRequest.java | 9 ++++-----
.../multipart/JakartaStreamMultiPartRequest.java | 14 ++++++++++----
2 files changed, 14 insertions(+), 9 deletions(-)
diff --git
a/core/src/main/java/org/apache/struts2/dispatcher/multipart/JakartaMultiPartRequest.java
b/core/src/main/java/org/apache/struts2/dispatcher/multipart/JakartaMultiPartRequest.java
index d27b2159d..542469ead 100644
---
a/core/src/main/java/org/apache/struts2/dispatcher/multipart/JakartaMultiPartRequest.java
+++
b/core/src/main/java/org/apache/struts2/dispatcher/multipart/JakartaMultiPartRequest.java
@@ -103,12 +103,11 @@ public class JakartaMultiPartRequest extends
AbstractMultiPartRequest {
protected void processUpload(HttpServletRequest request, String saveDir)
throws FileUploadException, UnsupportedEncodingException {
if (ServletFileUpload.isMultipartContent(request)) {
- for (FileItem item : parseRequest(request, saveDir)) {
+ // Track all FileItem instances for comprehensive cleanup - addAll
in case exception in for loop
+ allFileItems.addAll(parseRequest(request, saveDir));
+ for (FileItem item : allFileItems) {
LOG.debug("Found file item: [{}]",
normalizeSpace(item.getFieldName()));
-
- // Track all FileItem instances for comprehensive cleanup
- allFileItems.add(item);
-
+
if (item.isFormField()) {
processNormalFormField(item,
request.getCharacterEncoding());
} else {
diff --git
a/core/src/main/java/org/apache/struts2/dispatcher/multipart/JakartaStreamMultiPartRequest.java
b/core/src/main/java/org/apache/struts2/dispatcher/multipart/JakartaStreamMultiPartRequest.java
index 70eeb8e2a..3d0cdb8d7 100644
---
a/core/src/main/java/org/apache/struts2/dispatcher/multipart/JakartaStreamMultiPartRequest.java
+++
b/core/src/main/java/org/apache/struts2/dispatcher/multipart/JakartaStreamMultiPartRequest.java
@@ -76,10 +76,16 @@ public class JakartaStreamMultiPartRequest extends
AbstractMultiPartRequest {
LOG.debug("Performing File Upload temporary storage cleanup.");
for (List<FileInfo> fileInfoList : fileInfos.values()) {
for (FileInfo fileInfo : fileInfoList) {
- File file = fileInfo.getFile();
- LOG.debug("Deleting file '{}'.", file.getName());
- if (!file.delete()) {
- LOG.warn("There was a problem attempting to delete file
[{}].", file.getName());
+ try {
+ // catch any exceptions during cleanup to ensure all files
are deleted.
+ File file = fileInfo.getFile();
+ LOG.debug("Deleting file '{}'.", file.getName());
+ if (!file.delete()) {
+ LOG.warn("There was a problem attempting to delete
file [{}].",
+ file.getName());
+ }
+ } catch (Exception e) {
+ LOG.warn("Error during cleanup of file item: [{}]",
normalizeSpace(fileInfo.getOriginalName()), e);
}
}
}