提交 b2b1ff60 编写于 作者: J Juergen Hoeller

CommonsMultipartResolver cleans up all multipart files in case of multiple...

CommonsMultipartResolver cleans up all multipart files in case of multiple files for same name as well (SPR-2784)
上级 255d1ad4
/* /*
* Copyright 2002-2008 the original author or authors. * Copyright 2002-2010 the original author or authors.
* *
* Licensed under the Apache License, Version 2.0 (the "License"); * Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License. * you may not use this file except in compliance with the License.
...@@ -179,7 +179,7 @@ public class CommonsPortletMultipartResolver extends CommonsFileUploadSupport ...@@ -179,7 +179,7 @@ public class CommonsPortletMultipartResolver extends CommonsFileUploadSupport
public void cleanupMultipart(MultipartActionRequest request) { public void cleanupMultipart(MultipartActionRequest request) {
if (request != null) { if (request != null) {
try { try {
cleanupFileItems(request.getFileMap().values()); cleanupFileItems(request.getMultiFileMap());
} }
catch (Throwable ex) { catch (Throwable ex) {
logger.warn("Failed to perform multipart cleanup for portlet request", ex); logger.warn("Failed to perform multipart cleanup for portlet request", ex);
......
/* /*
* Copyright 2002-2009 the original author or authors. * Copyright 2002-2010 the original author or authors.
* *
* Licensed under the Apache License, Version 2.0 (the "License"); * Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License. * you may not use this file except in compliance with the License.
...@@ -18,11 +18,10 @@ package org.springframework.web.multipart.commons; ...@@ -18,11 +18,10 @@ package org.springframework.web.multipart.commons;
import java.io.IOException; import java.io.IOException;
import java.io.UnsupportedEncodingException; import java.io.UnsupportedEncodingException;
import java.util.Collection; import java.nio.charset.Charset;
import java.util.HashMap; import java.util.HashMap;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
import java.nio.charset.Charset;
import org.apache.commons.fileupload.FileItem; import org.apache.commons.fileupload.FileItem;
import org.apache.commons.fileupload.FileItemFactory; import org.apache.commons.fileupload.FileItemFactory;
...@@ -32,12 +31,12 @@ import org.apache.commons.logging.Log; ...@@ -32,12 +31,12 @@ import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory; import org.apache.commons.logging.LogFactory;
import org.springframework.core.io.Resource; import org.springframework.core.io.Resource;
import org.springframework.http.MediaType;
import org.springframework.util.LinkedMultiValueMap; import org.springframework.util.LinkedMultiValueMap;
import org.springframework.util.MultiValueMap; import org.springframework.util.MultiValueMap;
import org.springframework.util.StringUtils; import org.springframework.util.StringUtils;
import org.springframework.web.multipart.MultipartFile; import org.springframework.web.multipart.MultipartFile;
import org.springframework.web.util.WebUtils; import org.springframework.web.util.WebUtils;
import org.springframework.http.MediaType;
/** /**
* Base class for multipart resolvers that use Jakarta Commons FileUpload * Base class for multipart resolvers that use Jakarta Commons FileUpload
...@@ -271,14 +270,16 @@ public abstract class CommonsFileUploadSupport { ...@@ -271,14 +270,16 @@ public abstract class CommonsFileUploadSupport {
* @param multipartFiles Collection of MultipartFile instances * @param multipartFiles Collection of MultipartFile instances
* @see org.apache.commons.fileupload.FileItem#delete() * @see org.apache.commons.fileupload.FileItem#delete()
*/ */
protected void cleanupFileItems(Collection<MultipartFile> multipartFiles) { protected void cleanupFileItems(MultiValueMap<String, MultipartFile> multipartFiles) {
for (MultipartFile file : multipartFiles) { for (List<MultipartFile> files : multipartFiles.values()) {
if (file instanceof CommonsMultipartFile) { for (MultipartFile file : files) {
CommonsMultipartFile cmf = (CommonsMultipartFile) file; if (file instanceof CommonsMultipartFile) {
cmf.getFileItem().delete(); CommonsMultipartFile cmf = (CommonsMultipartFile) file;
if (logger.isDebugEnabled()) { cmf.getFileItem().delete();
logger.debug("Cleaning up multipart file [" + cmf.getName() + "] with original filename [" + if (logger.isDebugEnabled()) {
cmf.getOriginalFilename() + "], stored " + cmf.getStorageDescription()); logger.debug("Cleaning up multipart file [" + cmf.getName() + "] with original filename [" +
cmf.getOriginalFilename() + "], stored " + cmf.getStorageDescription());
}
} }
} }
} }
......
/* /*
* Copyright 2002-2008 the original author or authors. * Copyright 2002-2010 the original author or authors.
* *
* Licensed under the Apache License, Version 2.0 (the "License"); * Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License. * you may not use this file except in compliance with the License.
...@@ -20,11 +20,11 @@ import java.util.List; ...@@ -20,11 +20,11 @@ import java.util.List;
import javax.servlet.ServletContext; import javax.servlet.ServletContext;
import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletRequest;
import org.apache.commons.fileupload.FileItem;
import org.apache.commons.fileupload.FileItemFactory; import org.apache.commons.fileupload.FileItemFactory;
import org.apache.commons.fileupload.FileUpload; import org.apache.commons.fileupload.FileUpload;
import org.apache.commons.fileupload.FileUploadBase; import org.apache.commons.fileupload.FileUploadBase;
import org.apache.commons.fileupload.FileUploadException; import org.apache.commons.fileupload.FileUploadException;
import org.apache.commons.fileupload.FileItem;
import org.apache.commons.fileupload.servlet.ServletFileUpload; import org.apache.commons.fileupload.servlet.ServletFileUpload;
import org.springframework.util.Assert; import org.springframework.util.Assert;
...@@ -184,7 +184,7 @@ public class CommonsMultipartResolver extends CommonsFileUploadSupport ...@@ -184,7 +184,7 @@ public class CommonsMultipartResolver extends CommonsFileUploadSupport
public void cleanupMultipart(MultipartHttpServletRequest request) { public void cleanupMultipart(MultipartHttpServletRequest request) {
if (request != null) { if (request != null) {
try { try {
cleanupFileItems(request.getFileMap().values()); cleanupFileItems(request.getMultiFileMap());
} }
catch (Throwable ex) { catch (Throwable ex) {
logger.warn("Failed to perform multipart cleanup for servlet request", ex); logger.warn("Failed to perform multipart cleanup for servlet request", ex);
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册