日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > java >内容正文

java

【Java进阶】云存储-创建子模块作为第三方整合模块

發布時間:2024/9/30 java 22 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【Java进阶】云存储-创建子模块作为第三方整合模块 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

云存儲-創建子模塊作為第三方整合模塊

創建子模塊gulimall-third-party整合阿里云OSS等第三方模塊

pom.xml

<?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><groupId>cn.com.codingce</groupId><artifactId>gulimall-third-party</artifactId><version>0.0.1-SNAPSHOT</version><name>gulimall-third-party</name><description>第三方服務</description><properties><java.version>1.8</java.version><spring-cloud.version>Hoxton.RELEASE</spring-cloud.version></properties><dependencies><!-- 公眾項目 --><dependency><groupId>cn.com.codingce</groupId><artifactId>gulimall-common</artifactId><version>0.0.1-SNAPSHOT</version><!--排除包--><exclusions><exclusion><groupId>com.baomidou</groupId><artifactId>mybatis-plus-boot-starter</artifactId></exclusion></exclusions></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-openfeign</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope></dependency><!--引入spring-cloud-starter-alicloud-oss--><!--導入失敗,需指定為2.1.0RELEASE穩定版--><dependency><groupId>com.alibaba.cloud</groupId><!--<artifactId>aliyun-oss-spring-boot-starter</artifactId>--><artifactId>spring-cloud-starter-alicloud-oss</artifactId><version>2.1.0.RELEASE</version></dependency></dependencies><build><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId></plugin></plugins></build> </project>

application.yaml

spring: spring:application:name: gulimall-third-partycloud:nacos:discovery:server-addr: 127.0.0.1:8848 # alicloud: # access-key: "access-key" # secret-key: "secret-key" # oss: # endpoint: "oss-cn-beijing.aliyuncs.com" # # 本沒有這個屬性, 自己添加 # bucket: "codingce-product"logging:level:cn.com.codingce: debugserver:port: 30000

bootstrap.properties

spring.application.name=gulimall-third-party # 指定 nacos 配置中心地址 spring.cloud.nacos.config.server-addr=127.0.0.1:8848# 配置中心環境切換 spring.cloud.nacos.config.namespace=e50dccbc-fda9-45d6-b1c2-199ce0cce31f #spring.cloud.nacos.config.group=DEFAULT_GROUPspring.cloud.nacos.config.shared-configs[0].data-id=oss.yml spring.cloud.nacos.config.shared-configs[0].group=DEFAULT_GROUP # 是否動態刷新 spring.cloud.nacos.config.shared-configs[0].refresh=true

服務端簽名接口

OssController.java

package cn.com.codingce.thirdparty.controller;import cn.com.codingce.common.utils.R; import com.aliyun.oss.OSS; import com.aliyun.oss.common.utils.BinaryUtil; import com.aliyun.oss.model.MatchMode; import com.aliyun.oss.model.PolicyConditions; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController;import java.text.SimpleDateFormat; import java.util.Date; import java.util.LinkedHashMap; import java.util.Map;/*** @author mxz*/ @RestController public class OssController {@AutowiredOSS ossClient;@Value("${spring.cloud.alicloud.oss.endpoint}")private String endpoint;@Value("${spring.cloud.alicloud.oss.bucket}")private String bucket;@Value("${spring.cloud.alicloud.access-key}")private String accessId;@RequestMapping("/oss/policy")public R polcy() {// String accessId = "<yourAccessKeyId>"; // 請填寫您的AccessKeyId。// String accessKey = "<yourAccessKeySecret>"; // 請填寫您的AccessKeySecret。// String endpoint = "oss-cn-hangzhou.aliyuncs.com"; // 請填寫您的 endpoint。// String bucket = "codingce-product"; // 請填寫您的 bucketname 。String host = "https://" + bucket + "." + endpoint; // host的格式為 bucketname.endpoint// callbackUrl為 上傳回調服務器的URL,請將下面的IP和Port配置為您自己的真實信息。//String callbackUrl = "http://88.88.88.88:8888";String format = new SimpleDateFormat("yyyy-MM-dd").format(new Date());// String dir = "user-dir-prefix/"; // 用戶上傳文件時指定的前綴。String dir = format + "/"; // 用戶上傳文件時指定的前綴。// 創建OSSClient實例。// OSS ossClient = new OSSClientBuilder().build(endpoint, accessId, accessKey);Map<String, String> respMap = null;try {long expireTime = 30;long expireEndTime = System.currentTimeMillis() + expireTime * 1000;Date expiration = new Date(expireEndTime);// PostObject請求最大可支持的文件大小為5 GB,即CONTENT_LENGTH_RANGE為5*1024*1024*1024。PolicyConditions policyConds = new PolicyConditions();policyConds.addConditionItem(PolicyConditions.COND_CONTENT_LENGTH_RANGE, 0, 1048576000);policyConds.addConditionItem(MatchMode.StartWith, PolicyConditions.COND_KEY, dir);String postPolicy = ossClient.generatePostPolicy(expiration, policyConds);byte[] binaryData = postPolicy.getBytes("utf-8");String encodedPolicy = BinaryUtil.toBase64String(binaryData);String postSignature = ossClient.calculatePostSignature(postPolicy);respMap = new LinkedHashMap<String, String>();respMap.put("accessid", accessId);respMap.put("policy", encodedPolicy);respMap.put("signature", postSignature);respMap.put("dir", dir);respMap.put("host", host);respMap.put("expire", String.valueOf(expireEndTime / 1000));// respMap.put("expire", formatISO8601Date(expiration));} catch (Exception e) {// Assert.fail(e.getMessage());System.out.println(e.getMessage());} finally {ossClient.shutdown();}return R.ok().put("data", respMap);}}

使用網關服務統一接入

gulimall-gateway 服務 application.yml
注意配置規則斷言要講更精確的放在前面

spring:application:name: mall-gatewaycloud:gateway:routes:## 第三方服務- id: third_party_routeuri: lb://gulimall-third-partypredicates:- Path=/api/thirdparty/**filters:- RewritePath=/api/thirdparty(?<segment>/?.*), /$\{segment}

項目預覽

項目地址

由于github卡的嚴重,已將此項目放到gitee上
歡迎訪問

總結

以上是生活随笔為你收集整理的【Java进阶】云存储-创建子模块作为第三方整合模块的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。