From ec0c1b53a8e026312d2e628dc6c9519fea36faa6 Mon Sep 17 00:00:00 2001 From: Kerwin <37063904+zhuangchong@users.noreply.github.com> Date: Fri, 3 Dec 2021 16:50:05 +0800 Subject: [PATCH] Fix file upload exception. (#7152) --- .../api/service/impl/ResourcesServiceImpl.java | 2 +- .../apache/dolphinscheduler/api/utils/FileUtils.java | 11 +++++------ .../dolphinscheduler/api/utils/FileUtilsTest.java | 2 +- 3 files changed, 7 insertions(+), 8 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 d9e250c73b..251b8039ee 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 @@ -575,7 +575,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 6046a34771..694bbaf69a 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 @@ -37,14 +37,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..06aecc80f8 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 @@ -76,7 +76,7 @@ public class FileUtilsTest { Mockito.when(file.getResource().getFile()).thenReturn(new File(src)); //Invoke copyFile - FileUtils.copyFile(file,destFilename); + FileUtils.copyInputStreamToFile(file,destFilename); //Test file exists File destFile = new File(destFilename);