From 8f77fbbeb8e2261365ebc6921a8095eb56243afb Mon Sep 17 00:00:00 2001 From: Kerwin <37063904+zhuangchong@users.noreply.github.com> Date: Mon, 6 Dec 2021 14:13:53 +0800 Subject: [PATCH] =?UTF-8?q?[Fix-7154][API]=20Fix=20MultipartFile=20resourc?= =?UTF-8?q?e=20[file]=20cannot=20be=20resolved=20to=20absolute=20file?= =?UTF-8?q?=E2=80=A6=20(#7155)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * fix MultipartFile resource [file] cannot be resolved to absolute file path * update testCopyFile. --- .../api/service/impl/ResourcesServiceImpl.java | 2 +- .../apache/dolphinscheduler/api/utils/FileUtils.java | 11 +++++------ .../dolphinscheduler/api/utils/FileUtilsTest.java | 4 ++-- 3 files changed, 8 insertions(+), 9 deletions(-) diff --git a/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/service/impl/ResourcesServiceImpl.java b/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/service/impl/ResourcesServiceImpl.java index 05e84bb03e..0ebf546c01 100644 --- a/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/service/impl/ResourcesServiceImpl.java +++ b/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/service/impl/ResourcesServiceImpl.java @@ -596,7 +596,7 @@ public class ResourcesServiceImpl extends BaseServiceImpl implements ResourcesSe if (!HadoopUtils.getInstance().exists(resourcePath)) { createTenantDirIfNotExists(tenantCode); } - org.apache.dolphinscheduler.api.utils.FileUtils.copyFile(file, localFilename); + org.apache.dolphinscheduler.api.utils.FileUtils.copyInputStreamToFile(file, localFilename); HadoopUtils.getInstance().copyLocalToHdfs(localFilename, hdfsFilename, true, true); } catch (Exception e) { FileUtils.deleteFile(localFilename); diff --git a/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/utils/FileUtils.java b/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/utils/FileUtils.java index 41ca0e38a8..606dc6c396 100644 --- a/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/utils/FileUtils.java +++ b/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/utils/FileUtils.java @@ -38,14 +38,13 @@ public class FileUtils { private static final Logger logger = LoggerFactory.getLogger(FileUtils.class); /** - * copy source file to target file - * - * @param file file - * @param destFilename destination file name + * copy source InputStream to target file + * @param file + * @param destFilename */ - public static void copyFile(MultipartFile file, String destFilename) { + public static void copyInputStreamToFile(MultipartFile file, String destFilename) { try { - org.apache.commons.io.FileUtils.copyFile(file.getResource().getFile(), new File(destFilename)); + org.apache.commons.io.FileUtils.copyInputStreamToFile(file.getInputStream(), new File(destFilename)); } catch (IOException e) { logger.error("failed to copy file , {} is empty file", file.getOriginalFilename(), e); } diff --git a/dolphinscheduler-api/src/test/java/org/apache/dolphinscheduler/api/utils/FileUtilsTest.java b/dolphinscheduler-api/src/test/java/org/apache/dolphinscheduler/api/utils/FileUtilsTest.java index 2276e34ecd..a50629e647 100644 --- a/dolphinscheduler-api/src/test/java/org/apache/dolphinscheduler/api/utils/FileUtilsTest.java +++ b/dolphinscheduler-api/src/test/java/org/apache/dolphinscheduler/api/utils/FileUtilsTest.java @@ -73,10 +73,10 @@ public class FileUtilsTest { //Use Mockito to mock MultipartFile MultipartFile file = Mockito.mock(MultipartFile.class, Mockito.RETURNS_DEEP_STUBS); - Mockito.when(file.getResource().getFile()).thenReturn(new File(src)); + Mockito.when(file.getInputStream()).thenReturn(new FileInputStream(src)); //Invoke copyFile - FileUtils.copyFile(file,destFilename); + FileUtils.copyInputStreamToFile(file,destFilename); //Test file exists File destFile = new File(destFilename);