PR: FILEUPLOAD-293
Regression: Due to use of FileUtils.moveFile internally, it was no longer possible to overwrite an existing file in DiskFileItem.write(File). Fixed by deleting the target file, if possible.
diff --git a/src/changes/changes.xml b/src/changes/changes.xml
index 0aba4c5..a820ea3 100644
--- a/src/changes/changes.xml
+++ b/src/changes/changes.xml
@@ -46,6 +46,7 @@
<release version="2.0" date="TBD" description="2.0 Release">
<action dev="jochen" type="update">Changing Maven coordinates, and package name, due to binary incompatible changes.</action>
<action dev="jochen" type="update">Bumping Compiler Level to 1.8.</action>
+ <action issue="FILEUPLOAD-293" dev="jochen" type="fix">DiskFileItem.write(File) had been changed to use FileUtils.moveFile internally, preventing an existing file as the target.</action>
</release>
<release version="1.4" date="2018-12-23" description="1.4 Release">
<action issue="FILEUPLOAD-292" dev="chtompki" type="update">Don't create un-needed resources in FileUploadBase.java</action>
diff --git a/src/main/java/org/apache/commons/fileupload2/disk/DiskFileItem.java b/src/main/java/org/apache/commons/fileupload2/disk/DiskFileItem.java
index 2b9bfa7..d5c538d 100644
--- a/src/main/java/org/apache/commons/fileupload2/disk/DiskFileItem.java
+++ b/src/main/java/org/apache/commons/fileupload2/disk/DiskFileItem.java
@@ -402,6 +402,9 @@
* in a temporary location so move it to the
* desired file.
*/
+ if (file.exists()) {
+ file.delete();
+ }
FileUtils.moveFile(outputFile, file);
} else {
/*
diff --git a/src/test/java/org/apache/commons/fileupload2/DiskFileUploadTest.java b/src/test/java/org/apache/commons/fileupload2/DiskFileUploadTest.java
index a9fcdec..fad393c 100644
--- a/src/test/java/org/apache/commons/fileupload2/DiskFileUploadTest.java
+++ b/src/test/java/org/apache/commons/fileupload2/DiskFileUploadTest.java
@@ -91,14 +91,7 @@
assertNotNull(items);
assertFalse(items.isEmpty());
final DiskFileItem dfi = (DiskFileItem) items.get(0);
- final File out = new File("target/unit-tests/DiskFileUpload/out.file");
- if (out.isFile()) {
- out.delete();
- }
- final File outDir = out.getParentFile();
- if (!outDir.isDirectory()) {
- outDir.mkdirs();
- }
+ final File out = File.createTempFile("install", ".tmp");
dfi.write(out);
}
}