[FILEUPLOAD-248] DiskFileItem might suppress critical IOExceptions on rename - use FileUtil.move instead.
Also: close input stream silently to make delete more probable. Remove unneeded BufferedInputStream indirection for readFully().
git-svn-id: https://svn.apache.org/repos/asf/commons/proper/fileupload/trunk@1596086 13f79535-47bb-0310-9956-ffa450edef68
diff --git a/src/changes/changes.xml b/src/changes/changes.xml
index ebf4a71..9c07363 100644
--- a/src/changes/changes.xml
+++ b/src/changes/changes.xml
@@ -43,8 +43,8 @@
</properties>
<body>
- <release version="1.4" date="TBA" description=
-"TBA">
+ <release version="1.4" date="TBA" description="TBA">
+ <action issue="FILEUPLOAD-248" dev="ecki" type="fix">DiskFileItem might suppress critical IOExceptions on rename - use FileUtil.move instead</action>
<action issue="FILEUPLOAD-251" dev="sebb" type="fix">DiskFileItem#getTempFile() is broken</action>
<action issue="FILEUPLOAD-250" dev="sebb" type="fix">FileUploadBase - potential resource leak - InputStream not closed on exception</action>
<action issue="FILEUPLOAD-244" dev="sebb" type="fix">DiskFileItem.readObject fails to close FileInputStream</action>
diff --git a/src/main/java/org/apache/commons/fileupload/disk/DiskFileItem.java b/src/main/java/org/apache/commons/fileupload/disk/DiskFileItem.java
index c1a4008..59ee44f 100644
--- a/src/main/java/org/apache/commons/fileupload/disk/DiskFileItem.java
+++ b/src/main/java/org/apache/commons/fileupload/disk/DiskFileItem.java
@@ -19,7 +19,6 @@
import static java.lang.String.format;
import java.io.BufferedInputStream;
-import java.io.BufferedOutputStream;
import java.io.ByteArrayInputStream;
import java.io.File;
import java.io.FileInputStream;
@@ -39,6 +38,7 @@
import org.apache.commons.fileupload.FileUploadException;
import org.apache.commons.fileupload.ParameterParser;
import org.apache.commons.fileupload.util.Streams;
+import org.apache.commons.io.FileUtils;
import org.apache.commons.io.IOUtils;
import org.apache.commons.io.output.DeferredFileOutputStream;
@@ -312,7 +312,7 @@
InputStream fis = null;
try {
- fis = new BufferedInputStream(new FileInputStream(dfos.getFile()));
+ fis = new FileInputStream(dfos.getFile());
IOUtils.readFully(fis, fileData);
} catch (IOException e) {
fileData = null;
@@ -403,20 +403,7 @@
* in a temporary location so move it to the
* desired file.
*/
- if (!outputFile.renameTo(file)) {
- BufferedInputStream in = null;
- BufferedOutputStream out = null;
- try {
- in = new BufferedInputStream(
- new FileInputStream(outputFile));
- out = new BufferedOutputStream(
- new FileOutputStream(file));
- IOUtils.copy(in, out);
- } finally {
- IOUtils.closeQuietly(in);
- IOUtils.closeQuietly(out);
- }
- }
+ FileUtils.moveFile(outputFile, file);
} else {
/*
* For whatever reason we cannot write the
@@ -672,7 +659,7 @@
} else {
FileInputStream input = new FileInputStream(dfosFile);
IOUtils.copy(input, output);
- input.close();
+ IOUtils.closeQuietly(input);
dfosFile.delete();
dfosFile = null;
}