From 72ba3c8daf0303d1afb39c5021eaab1514d3cc56 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=AB=98=E5=A4=A7?= <1504665037@qq.com> Date: Sat, 24 Jan 2026 15:36:41 +0800 Subject: [PATCH 1/3] =?UTF-8?q?=E6=96=87=E4=BB=B6=E6=9C=8D=E5=8A=A1?= =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E9=80=9A=E8=BF=87=E9=85=8D=E7=BD=AE=E6=8E=A7?= =?UTF-8?q?=E5=88=B6=E6=96=87=E4=BB=B6=E5=AD=98=E5=82=A8=E6=96=B9=E5=BC=8F?= =?UTF-8?q?=E7=9A=84=E9=85=8D=E7=BD=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/ruoyi/file/service/LocalSysFileServiceImpl.java | 3 ++- .../java/com/ruoyi/file/service/MinioSysFileServiceImpl.java | 2 ++ 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/src/main/java/com/ruoyi/file/service/LocalSysFileServiceImpl.java b/src/main/java/com/ruoyi/file/service/LocalSysFileServiceImpl.java index 48e0ceb..9c2adf8 100644 --- a/src/main/java/com/ruoyi/file/service/LocalSysFileServiceImpl.java +++ b/src/main/java/com/ruoyi/file/service/LocalSysFileServiceImpl.java @@ -4,6 +4,7 @@ import com.ruoyi.common.core.utils.StringUtils; import com.ruoyi.common.core.utils.file.FileUtils; import com.ruoyi.file.utils.FileUploadUtils; import org.springframework.beans.factory.annotation.Value; +import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; import org.springframework.context.annotation.Primary; import org.springframework.stereotype.Service; import org.springframework.web.multipart.MultipartFile; @@ -16,8 +17,8 @@ import java.io.ByteArrayOutputStream; * * @author ruoyi */ -@Primary @Service +@ConditionalOnProperty(name = "file.storage", havingValue = "local", matchIfMissing = true) public class LocalSysFileServiceImpl implements ISysFileService { /** * 资源映射路径 前缀 diff --git a/src/main/java/com/ruoyi/file/service/MinioSysFileServiceImpl.java b/src/main/java/com/ruoyi/file/service/MinioSysFileServiceImpl.java index 204291f..2d02240 100644 --- a/src/main/java/com/ruoyi/file/service/MinioSysFileServiceImpl.java +++ b/src/main/java/com/ruoyi/file/service/MinioSysFileServiceImpl.java @@ -8,6 +8,7 @@ import io.minio.MinioClient; import io.minio.PutObjectArgs; import io.minio.RemoveObjectArgs; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; import org.springframework.stereotype.Service; import org.springframework.web.multipart.MultipartFile; @@ -21,6 +22,7 @@ import java.io.InputStream; * @author ruoyi */ @Service +@ConditionalOnProperty(name = "file.storage", havingValue = "minio") public class MinioSysFileServiceImpl implements ISysFileService { @Autowired private MinioConfig minioConfig; From 8c1353232269f0ddef4715f54f0ec8e3855537dc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=AB=98=E5=A4=A7?= <1504665037@qq.com> Date: Sat, 24 Jan 2026 16:13:02 +0800 Subject: [PATCH 2/3] =?UTF-8?q?feat:=E6=96=87=E4=BB=B6=E6=9C=8D=E5=8A=A1?= =?UTF-8?q?=E8=A1=A5=E5=85=85feign=E6=8E=A5=E5=8F=A3-=E5=A2=9E=E5=8A=A0?= =?UTF-8?q?=E6=B5=81=E5=BC=8F=E8=B0=83=E7=94=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../file/controller/SysFileController.java | 51 ++++++++++--------- .../file/service/LocalSysFileServiceImpl.java | 1 - 2 files changed, 28 insertions(+), 24 deletions(-) diff --git a/src/main/java/com/ruoyi/file/controller/SysFileController.java b/src/main/java/com/ruoyi/file/controller/SysFileController.java index e876a9e..aeb0f9c 100644 --- a/src/main/java/com/ruoyi/file/controller/SysFileController.java +++ b/src/main/java/com/ruoyi/file/controller/SysFileController.java @@ -1,5 +1,10 @@ package com.ruoyi.file.controller; +import com.ruoyi.common.core.domain.R; +import com.ruoyi.common.core.utils.StringUtils; +import com.ruoyi.common.core.utils.file.FileUtils; +import com.ruoyi.file.service.ISysFileService; +import com.ruoyi.system.api.domain.SysFile; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; @@ -7,20 +12,16 @@ import org.springframework.web.bind.annotation.DeleteMapping; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RestController; import org.springframework.web.multipart.MultipartFile; -import com.ruoyi.common.core.domain.R; -import com.ruoyi.common.core.utils.StringUtils; -import com.ruoyi.common.core.utils.file.FileUtils; -import com.ruoyi.file.service.ISysFileService; -import com.ruoyi.system.api.domain.SysFile; + +import java.io.ByteArrayOutputStream; /** * 文件请求处理 - * + * * @author ruoyi */ @RestController -public class SysFileController -{ +public class SysFileController { private static final Logger log = LoggerFactory.getLogger(SysFileController.class); @Autowired @@ -30,19 +31,15 @@ public class SysFileController * 文件上传请求 */ @PostMapping("upload") - public R upload(MultipartFile file) - { - try - { + public R upload(MultipartFile file) { + try { // 上传并返回访问地址 String url = sysFileService.uploadFile(file); SysFile sysFile = new SysFile(); sysFile.setName(FileUtils.getName(url)); sysFile.setUrl(url); return R.ok(sysFile); - } - catch (Exception e) - { + } catch (Exception e) { log.error("上传文件失败", e); return R.fail(e.getMessage()); } @@ -52,19 +49,27 @@ public class SysFileController * 文件删除请求 */ @DeleteMapping("delete") - public R delete(String fileUrl) - { - try - { - if (!FileUtils.validateFilePath(fileUrl)) - { + public R delete(String fileUrl) { + try { + if (!FileUtils.validateFilePath(fileUrl)) { throw new Exception(StringUtils.format("资源文件({})非法,不允许删除。 ", fileUrl)); } sysFileService.deleteFile(fileUrl); return R.ok(); + } catch (Exception e) { + log.error("删除文件失败", e); + return R.fail(e.getMessage()); } - catch (Exception e) - { + } + + /** + * 文件流上传请求 + */ + @PostMapping("uploadStream") + public R uploadFileByStream(String filename, String extension, ByteArrayOutputStream out) { + try { + return R.ok(sysFileService.uploadFileByStream(filename, extension, out)); + } catch (Exception e) { log.error("删除文件失败", e); return R.fail(e.getMessage()); } diff --git a/src/main/java/com/ruoyi/file/service/LocalSysFileServiceImpl.java b/src/main/java/com/ruoyi/file/service/LocalSysFileServiceImpl.java index 9c2adf8..11a6a58 100644 --- a/src/main/java/com/ruoyi/file/service/LocalSysFileServiceImpl.java +++ b/src/main/java/com/ruoyi/file/service/LocalSysFileServiceImpl.java @@ -5,7 +5,6 @@ import com.ruoyi.common.core.utils.file.FileUtils; import com.ruoyi.file.utils.FileUploadUtils; import org.springframework.beans.factory.annotation.Value; import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; -import org.springframework.context.annotation.Primary; import org.springframework.stereotype.Service; import org.springframework.web.multipart.MultipartFile; From 1e18bf59b59677887eb7684efbdaf33aff3d2b3d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=AB=98=E5=A4=A7?= <1504665037@qq.com> Date: Sat, 24 Jan 2026 17:18:09 +0800 Subject: [PATCH 3/3] =?UTF-8?q?fix:=E4=BC=98=E5=8C=96=E8=88=AA=E7=BA=BF?= =?UTF-8?q?=E7=AE=A1=E7=90=86=E8=88=AA=E7=BA=BF=E4=B8=8A=E4=BC=A0=E9=80=BB?= =?UTF-8?q?=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/ruoyi/file/controller/SysFileController.java | 9 ++++----- .../java/com/ruoyi/file/service/ISysFileService.java | 4 +--- .../com/ruoyi/file/service/LocalSysFileServiceImpl.java | 4 ++-- .../com/ruoyi/file/service/MinioSysFileServiceImpl.java | 4 ++-- 4 files changed, 9 insertions(+), 12 deletions(-) diff --git a/src/main/java/com/ruoyi/file/controller/SysFileController.java b/src/main/java/com/ruoyi/file/controller/SysFileController.java index aeb0f9c..12554b2 100644 --- a/src/main/java/com/ruoyi/file/controller/SysFileController.java +++ b/src/main/java/com/ruoyi/file/controller/SysFileController.java @@ -13,8 +13,6 @@ import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RestController; import org.springframework.web.multipart.MultipartFile; -import java.io.ByteArrayOutputStream; - /** * 文件请求处理 * @@ -66,11 +64,12 @@ public class SysFileController { * 文件流上传请求 */ @PostMapping("uploadStream") - public R uploadFileByStream(String filename, String extension, ByteArrayOutputStream out) { + public R uploadFileByStream(String filename, String extension, String data) { try { - return R.ok(sysFileService.uploadFileByStream(filename, extension, out)); + + return R.ok(sysFileService.uploadFileByData(filename, extension, data)); } catch (Exception e) { - log.error("删除文件失败", e); + log.error("上传文件失败", e); return R.fail(e.getMessage()); } } diff --git a/src/main/java/com/ruoyi/file/service/ISysFileService.java b/src/main/java/com/ruoyi/file/service/ISysFileService.java index 2c8fa00..9c9a4c4 100644 --- a/src/main/java/com/ruoyi/file/service/ISysFileService.java +++ b/src/main/java/com/ruoyi/file/service/ISysFileService.java @@ -2,8 +2,6 @@ package com.ruoyi.file.service; import org.springframework.web.multipart.MultipartFile; -import java.io.ByteArrayOutputStream; - /** * 文件上传接口 * @@ -36,5 +34,5 @@ public interface ISysFileService { * @param out 上传的流 * @return 访问地址 */ - String uploadFileByStream(String filename, String extension, ByteArrayOutputStream out) throws Exception; + String uploadFileByData(String filename, String extension, String out) throws Exception; } diff --git a/src/main/java/com/ruoyi/file/service/LocalSysFileServiceImpl.java b/src/main/java/com/ruoyi/file/service/LocalSysFileServiceImpl.java index 11a6a58..8cb09bd 100644 --- a/src/main/java/com/ruoyi/file/service/LocalSysFileServiceImpl.java +++ b/src/main/java/com/ruoyi/file/service/LocalSysFileServiceImpl.java @@ -71,8 +71,8 @@ public class LocalSysFileServiceImpl implements ISysFileService { * @return 访问地址 */ @Override - public String uploadFileByStream(String filename, String extension, ByteArrayOutputStream out) throws Exception { - try (ByteArrayInputStream in = new ByteArrayInputStream(out.toByteArray())) { + public String uploadFileByData(String filename, String extension, String out) throws Exception { + try (ByteArrayInputStream in = new ByteArrayInputStream(out.getBytes())) { String fileName = FileUploadUtils.extractFilename(filename, extension); return FileUploadUtils.uploadByStream(localFilePath, fileName, in); } catch (Exception e) { diff --git a/src/main/java/com/ruoyi/file/service/MinioSysFileServiceImpl.java b/src/main/java/com/ruoyi/file/service/MinioSysFileServiceImpl.java index 2d02240..8c87d7b 100644 --- a/src/main/java/com/ruoyi/file/service/MinioSysFileServiceImpl.java +++ b/src/main/java/com/ruoyi/file/service/MinioSysFileServiceImpl.java @@ -75,8 +75,8 @@ public class MinioSysFileServiceImpl implements ISysFileService { } @Override - public String uploadFileByStream(String filename, String extension, ByteArrayOutputStream out) throws Exception { - try (ByteArrayInputStream in = new ByteArrayInputStream(out.toByteArray())) { + public String uploadFileByData(String filename, String extension, String out) throws Exception { + try (ByteArrayInputStream in = new ByteArrayInputStream(out.getBytes())) { String fileName = FileUploadUtils.extractFilename(filename, extension); String contentType = FileUploadUtils.getContentType(extension); // 获取文件类型 PutObjectArgs args = PutObjectArgs.builder()