Details
-
Bug
-
Status: Closed
-
Major
-
Resolution: Fixed
-
None
-
None
Description
FleUploadBase.parseRequest() keeps files on disk if parser error occured. Patch
diff -r cf24bc636e09 -r f706d95f56b7 src/java/org/apache/commons/fileupload/FileUploadBase.java --- a/src/java/org/apache/commons/fileupload/FileUploadBase.java Wed May 28 22:25:00 2008 +0400 +++ b/src/java/org/apache/commons/fileupload/FileUploadBase.java Thu May 29 15:40:04 2008 +0400 @@ -345,9 +345,10 @@ */ public List /* FileItem */ parseRequest(RequestContext ctx) throws FileUploadException { + List items = new ArrayList(); + boolean successful = false; try { FileItemIterator iter = getItemIterator(ctx); - List items = new ArrayList(); FileItemFactory fac = getFileItemFactory(); if (fac == null) { throw new NullPointerException( @@ -358,6 +359,7 @@ FileItem fileItem = fac.createItem(item.getFieldName(), item.getContentType(), item.isFormField(), item.getName()); + items.add(fileItem); try { Streams.copy(item.openStream(), fileItem.getOutputStream(), true); @@ -372,13 +374,24 @@ final FileItemHeaders fih = item.getHeaders(); ((FileItemHeadersSupport) fileItem).setHeaders(fih); } - items.add(fileItem); } + successful = true; return items; } catch (FileUploadIOException e) { throw (FileUploadException) e.getCause(); } catch (IOException e) { throw new FileUploadException(e.getMessage(), e); + } finally { + if (!successful) { + for (Iterator iterator = items.iterator(); iterator.hasNext();) { + FileItem fileItem = (FileItem) iterator.next(); + try { + fileItem.delete(); + } catch (Throwable e) { + // ignore it + } + } + } } }
Attachments
Issue Links
- is duplicated by
-
FILEUPLOAD-141 Remove FileItems if FileUploadBase.parseRequest() fails
- Closed