From 238171af3716cbeeac0c262c497a6d782cbb26d8 Mon Sep 17 00:00:00 2001
From: zyy <zyy@email.com>
Date: Thu, 18 Sep 2025 16:48:42 +0800
Subject: [PATCH] 文件上传
---
trading-order-service/src/main/java/com/yami/trading/service/impl/AwsS3OSSFileServiceImpl.java | 59 +++++++++++++++++++++++++++++
trading-order-service/src/main/java/com/yami/trading/service/AwsS3OSSFileService.java | 2 +
trading-order-bean/src/main/java/com/yami/trading/bean/model/FileUploadParamsModel.java | 3 +
trading-order-admin/src/main/java/com/yami/trading/admin/controller/UploadFileController.java | 17 ++++++--
4 files changed, 77 insertions(+), 4 deletions(-)
diff --git a/trading-order-admin/src/main/java/com/yami/trading/admin/controller/UploadFileController.java b/trading-order-admin/src/main/java/com/yami/trading/admin/controller/UploadFileController.java
index e3e2bd6..f96f9d2 100644
--- a/trading-order-admin/src/main/java/com/yami/trading/admin/controller/UploadFileController.java
+++ b/trading-order-admin/src/main/java/com/yami/trading/admin/controller/UploadFileController.java
@@ -32,13 +32,22 @@
if (model.getFile().getSize() / 1000L > 4500) {
throw new YamiShopBindException("图片大小不能超过4M");
}
+ String path;
+ FileInfoVo fileInfoVo=new FileInfoVo();
if (StringUtils.isEmptyString(model.getModuleName())){
model.setModuleName("common");
+ path= awsS3OSSFileService.uploadFile(model.getModuleName(), model.getFile());
+ fileInfoVo.setHttpUrl(Constants.IMAGES_HTTP + path);
+ fileInfoVo.setPath(path);
+ } else if(model.getModuleName().equals("icon")){
+ path= awsS3OSSFileService.uploadIcon(model.getFileName(), model.getFile());
+ fileInfoVo.setHttpUrl(Constants.IMAGES_HTTP + path);
+ fileInfoVo.setPath(path);
+ } else {
+ path= awsS3OSSFileService.uploadFile(model.getModuleName(), model.getFile());
+ fileInfoVo.setHttpUrl(Constants.IMAGES_HTTP + path);
+ fileInfoVo.setPath(path);
}
- String path= awsS3OSSFileService.uploadFile(model.getModuleName(), model.getFile());
- FileInfoVo fileInfoVo=new FileInfoVo();
- fileInfoVo.setHttpUrl(Constants.IMAGES_HTTP+path);
- fileInfoVo.setPath(path);
return Result.ok(fileInfoVo);
}
catch (Exception e) {
diff --git a/trading-order-bean/src/main/java/com/yami/trading/bean/model/FileUploadParamsModel.java b/trading-order-bean/src/main/java/com/yami/trading/bean/model/FileUploadParamsModel.java
index 015f927..e31b8f5 100644
--- a/trading-order-bean/src/main/java/com/yami/trading/bean/model/FileUploadParamsModel.java
+++ b/trading-order-bean/src/main/java/com/yami/trading/bean/model/FileUploadParamsModel.java
@@ -14,4 +14,7 @@
@ApiModelProperty("模块名")
private String moduleName;
+
+ @ApiModelProperty("文件名")
+ private String fileName;
}
diff --git a/trading-order-service/src/main/java/com/yami/trading/service/AwsS3OSSFileService.java b/trading-order-service/src/main/java/com/yami/trading/service/AwsS3OSSFileService.java
index 39afec6..3090caf 100644
--- a/trading-order-service/src/main/java/com/yami/trading/service/AwsS3OSSFileService.java
+++ b/trading-order-service/src/main/java/com/yami/trading/service/AwsS3OSSFileService.java
@@ -10,4 +10,6 @@
void setPolicy(String bucketName);
String getUrl( String path);
+
+ String uploadIcon(String moduleName, MultipartFile file);
}
diff --git a/trading-order-service/src/main/java/com/yami/trading/service/impl/AwsS3OSSFileServiceImpl.java b/trading-order-service/src/main/java/com/yami/trading/service/impl/AwsS3OSSFileServiceImpl.java
index 7b17759..b0f6a9e 100644
--- a/trading-order-service/src/main/java/com/yami/trading/service/impl/AwsS3OSSFileServiceImpl.java
+++ b/trading-order-service/src/main/java/com/yami/trading/service/impl/AwsS3OSSFileServiceImpl.java
@@ -353,4 +353,63 @@
String fileType = FilenameUtils.getExtension(fileName);
return imgTypes.contains(fileType.toLowerCase());
}
+
+ /**
+ * 上传图标
+ * @param moduleName
+ * @param file
+ * @return
+ */
+ @Override
+ public String uploadIcon(String moduleName, MultipartFile file) {
+ // 兼容c端组件上传原理
+ String originalFilename = file.getOriginalFilename();
+ String fileType = originalFilename != null ? originalFilename : "";
+ if (StrUtil.isEmpty(fileType) || fileType.contains("blob")) {
+ fileType = "blob.png";
+ }
+
+ // 提取文件扩展名
+ String extension = "";
+ int dotIndex = fileType.lastIndexOf('.');
+ if (dotIndex > 0) {
+ extension = fileType.substring(dotIndex);
+ }
+
+ String filename = moduleName + extension;
+ String path = filename; // 直接使用文件名作为路径
+
+ // 确保目标文件夹存在
+ File targetDir = new File(PropertiesUtil.getProperty("loca.images.dir") + "/symbol");
+ if (!targetDir.exists()) {
+ targetDir.mkdirs();
+ // 设置目录权限为755 (rwxr-xr-x)
+ setFilePermissions(targetDir, "755");
+ }
+
+ // 构建本地文件路径
+ File localFile = new File(targetDir, filename);
+
+ // 打印上传路径
+ log.info("LocalFileUploadService uploadFile localFilePath: {}", localFile.getAbsolutePath());
+
+ try {
+ // 将文件保存到本地
+ file.transferTo(localFile);
+
+ // 设置文件权限为644 (rw-r--r--)
+ setFilePermissions(localFile, "644");
+
+ // 如果需要自定义元数据,可以在此处理
+ Map<String, String> metadata = new HashMap<>();
+ metadata.put("x-amz-meta-myVal", "test");
+
+ // 返回文件名
+ return "symbol/" + path;
+
+ } catch (IOException e) {
+ log.error("LocalFileUploadService uploadFile IOException", e.getMessage(), e);
+ throw new YamiShopBindException("文件上传失败");
+ }
+ }
}
--
Gitblit v1.9.3