From 5acf8489cdda13ee8158752810c4ee9d51ebaa74 Mon Sep 17 00:00:00 2001 From: "autumn.g@foxmail.com" Date: Tue, 4 Apr 2023 16:36:19 +0800 Subject: [PATCH] =?UTF-8?q?update=20=E4=B8=8A=E4=BC=A0=E9=98=BF=E9=87=8C?= =?UTF-8?q?=E4=BA=91oss?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/common/CommonController.java | 19 ++++ .../src/main/resources/application-dev.yml | 14 +++ jsowell-common/pom.xml | 7 ++ .../common/config/AliyunOssConfig.java | 98 +++++++++++++++++++ .../util/file/AliyunOssUploadUtils.java | 55 +++++++++++ 5 files changed, 193 insertions(+) create mode 100644 jsowell-common/src/main/java/com/jsowell/common/config/AliyunOssConfig.java create mode 100644 jsowell-common/src/main/java/com/jsowell/common/util/file/AliyunOssUploadUtils.java diff --git a/jsowell-admin/src/main/java/com/jsowell/web/controller/common/CommonController.java b/jsowell-admin/src/main/java/com/jsowell/web/controller/common/CommonController.java index 0eb92a87a..cf3052cf3 100644 --- a/jsowell-admin/src/main/java/com/jsowell/web/controller/common/CommonController.java +++ b/jsowell-admin/src/main/java/com/jsowell/web/controller/common/CommonController.java @@ -4,6 +4,7 @@ import com.jsowell.common.config.JsowellConfig; import com.jsowell.common.constant.Constants; import com.jsowell.common.core.domain.AjaxResult; import com.jsowell.common.util.StringUtils; +import com.jsowell.common.util.file.AliyunOssUploadUtils; import com.jsowell.common.util.file.FileUploadUtils; import com.jsowell.common.util.file.FileUtils; import com.jsowell.framework.config.ServerConfig; @@ -11,6 +12,7 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.http.MediaType; +import org.springframework.web.bind.annotation.CrossOrigin; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestMapping; @@ -160,4 +162,21 @@ public class CommonController { return AjaxResult.error(e.getMessage()); } } + + @CrossOrigin + @PostMapping("/uploadOSS") + public AjaxResult uploadFileOSS(MultipartFile file) throws Exception { + System.out.println(file); + try { + String url = AliyunOssUploadUtils.uploadFile(file); + AjaxResult ajax = AjaxResult.success(); + ajax.put("url", url); + ajax.put("fileName", FileUtils.getName(url)); + ajax.put("newFileName", FileUtils.getName(url)); + ajax.put("originalFilename", file.getOriginalFilename()); + return ajax; + }catch (Exception e){ + return AjaxResult.error(e.getMessage()); + } + } } diff --git a/jsowell-admin/src/main/resources/application-dev.yml b/jsowell-admin/src/main/resources/application-dev.yml index 9df616ccd..e473ec0c4 100644 --- a/jsowell-admin/src/main/resources/application-dev.yml +++ b/jsowell-admin/src/main/resources/application-dev.yml @@ -104,6 +104,20 @@ minio: secretKey: minioadmin bucketName: jsowell +aliyunoss: + # 地域节点 + endpoint: oss-cn-shanghai.aliyuncs.com + # AccessKey + accessKeyId: LTAI5tBgCN4xuxQF1HV9rf7t + # AccessKey 秘钥 + accessKeySecret: tsxMyujk6KY9h0e4Bx0D7ld16PBUyW + # bucket名称 + bucketName: ydc-oss-dev + # bucket下文件夹的路径 + filehost: img + # 访问域名 + url: ydc-oss-dev.oss-cn-shanghai.aliyuncs.com + ########################微信支付参数####################################### #微信商户号 diff --git a/jsowell-common/pom.xml b/jsowell-common/pom.xml index 68346046a..db037dd98 100644 --- a/jsowell-common/pom.xml +++ b/jsowell-common/pom.xml @@ -164,6 +164,13 @@ 8.2.1 + + + com.aliyun.oss + aliyun-sdk-oss + 3.10.2 + + diff --git a/jsowell-common/src/main/java/com/jsowell/common/config/AliyunOssConfig.java b/jsowell-common/src/main/java/com/jsowell/common/config/AliyunOssConfig.java new file mode 100644 index 000000000..09b5a9d83 --- /dev/null +++ b/jsowell-common/src/main/java/com/jsowell/common/config/AliyunOssConfig.java @@ -0,0 +1,98 @@ +package com.jsowell.common.config; + +import org.springframework.boot.context.properties.ConfigurationProperties; +import org.springframework.stereotype.Component; + +@Component +@ConfigurationProperties(prefix = "aliyunoss") +public class AliyunOssConfig { + /** + * 地域节点 + */ + private String endpoint; + + /** + * AccessKey + */ + private String accessKeyId; + + /** + * AccessKey秘钥 + */ + private String accessKeySecret; + + /** + * bucket名称 + */ + private String bucketName; + + /** + * bucket下文件夹的路径 + */ + private String filehost; + + /** + * 访问域名 + */ + private String url; + + public String getEndpoint() { + return endpoint; + } + + public void setEndpoint(String endpoint) { + this.endpoint = endpoint; + } + + public String getAccessKeyId() { + return accessKeyId; + } + + public void setAccessKeyId(String accessKeyId) { + this.accessKeyId = accessKeyId; + } + + public String getAccessKeySecret() { + return accessKeySecret; + } + + public void setAccessKeySecret(String accessKeySecret) { + this.accessKeySecret = accessKeySecret; + } + + public String getBucketName() { + return bucketName; + } + + public void setBucketName(String bucketName) { + this.bucketName = bucketName; + } + + public String getFilehost() { + return filehost; + } + + public void setFilehost(String filehost) { + this.filehost = filehost; + } + + public String getUrl() { + return url; + } + + public void setUrl(String url) { + this.url = url; + } + + @Override + public String toString() { + return "AliyunOssConfig{" + + "endpoint='" + endpoint + '\'' + + ", accessKeyId='" + accessKeyId + '\'' + + ", accessKeySecret='" + accessKeySecret + '\'' + + ", bucketName='" + bucketName + '\'' + + ", filehost='" + filehost + '\'' + + ", url='" + url + '\'' + + '}'; + } +} \ No newline at end of file diff --git a/jsowell-common/src/main/java/com/jsowell/common/util/file/AliyunOssUploadUtils.java b/jsowell-common/src/main/java/com/jsowell/common/util/file/AliyunOssUploadUtils.java new file mode 100644 index 000000000..a25474a3a --- /dev/null +++ b/jsowell-common/src/main/java/com/jsowell/common/util/file/AliyunOssUploadUtils.java @@ -0,0 +1,55 @@ +package com.jsowell.common.util.file; + +import com.aliyun.oss.OSS; +import com.aliyun.oss.OSSClientBuilder; +import com.jsowell.common.config.AliyunOssConfig; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; +import org.springframework.web.multipart.MultipartFile; + +import java.io.IOException; + +@Component +public class AliyunOssUploadUtils { + + private static AliyunOssConfig aliyunOssConfig; + + + /** + * 使用构造方法注入配置信息 + */ + @Autowired + public AliyunOssUploadUtils(AliyunOssConfig aliyunOssConfig) { + AliyunOssUploadUtils.aliyunOssConfig = aliyunOssConfig; + } + + /** + * 上传文件 + * + * @param file + * @return + * @throws Exception + */ + public static String uploadFile(MultipartFile file) throws Exception { + + // 生成 OSSClient + OSS ossClient = new OSSClientBuilder().build(aliyunOssConfig.getEndpoint(), aliyunOssConfig.getAccessKeyId(), aliyunOssConfig.getAccessKeySecret()); + // 原始文件名称 + // String originalFilename = file.getOriginalFilename(); + + // 编码文件名 + String filePathName = FileUploadUtils.extractFilename(file); + // 文件路径名称 + filePathName = aliyunOssConfig.getFilehost() + "/" + filePathName; + try { + ossClient.putObject(aliyunOssConfig.getBucketName(), filePathName, file.getInputStream()); + } catch (IOException e) { + e.printStackTrace(); + } finally { + if (ossClient != null) { + ossClient.shutdown(); + } + } + return aliyunOssConfig.getUrl() + "/" + filePathName; + } +} \ No newline at end of file