【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进阶】云存储-创建子模块作为第三方整合模块相关推荐
- nano云存储 java,Nano云存储静态文件存储CDN和WDCDN免费CDN加速
前一篇的七牛云存储国内免费CDN加速的文章,有朋友留言说又出现一个新的文件云存储服务:nano云存储,我一搜索还真是"新"出来的,谷歌官网都没有收录,反而异常的是百度收录了首页,再 ...
- Z-File 开源免费自建个人网盘程序 Java/支持云存储
如今越来越多的网友.站长会选择自建个人网盘程序来存储个人自愿私人使用或者公开使用.自建个人网盘程序的特点在于不会受到第三方网盘提供方的限速和文件大小限制,比如我们在使用百度网盘的时候下载速度会受到限制 ...
- 基于云存储网关的Veeam备份归档上云方案
前言 面对数据可靠性和合规性要求的不断增长,只备份一份数据已经不能满足用户对于数据可靠性的需求.传统备份厂商的异地备份方案是将用户生产环境里的数据备份至不同机柜或者异地机房来保护数据,规避单机房存在的 ...
- 还不错的云盘网盘PHP系统源码+支持对接云存储
正文: 还不错的云盘网盘PHP系统源码+支持对接云存储,快速对接第三方云存储,支持七牛.又拍.阿里OSS.AWS S3.Onedrive.自建远程服务器,当然,还有本地存储. 自定义主题配色,图片.音 ...
- Oracle Java Cloud系列(02)——创建Java云的应用服务器实例 及 数据库云实例
本指南为整个系列的第二篇,介绍如何创建Oracle数据库云服务与Java云服务,文章整体将分为下面三个部分: 第一步:创建服务前准备 - 密钥与云存储容器 第二步:创建数据库云服务 第三步:创建Jav ...
- 使用java开发阿里云OSS开放云存储服务
购买了阿里云后,我们发现一般ECS的存储空间都比较小,当然我们可以动态的扩展一些存储空间.但是作为开发者,我们在日常使用中需要一些更大的灵活性,因此就需要我们自己对OSS存储有一些自己的扩展.今天就为 ...
- 百度云存储服务BCS教程使用java接入
目前百度云存储服务已为广大开发者提供了以下SDK: PHP SDK Java SDK Python SDK C/C++(linux版本)SDK 1.首先得先注册百度帐号,然后申请加入百度开发者.这个就 ...
- BCS百度云存储无法创建bucket解决篇 以及API接口的使用
前言:时下云计算早已如火如荼,paas(平台即服务)技术趋于基础,百度云日渐成熟,具有很大的潜力. 个人觉得百度云官网文档还是很高大上的,对我起了很大的帮助,但是一些细节和问题(比如bucket无法创 ...
- Java实现操作阿里云OSS云存储详解,含配置和完整代码
最近使用java代码操作阿里云存储,分享给大家 目录 1.OSS云存储配置 2.获取accessKeyId和accessKeySecret 3.编写SpringBoot代码 3.1pom.xml文件引 ...
最新文章
- Go 语言 bytes.buffer write 相关操作
- 物理、线性、虚拟、逻辑、有效地址
- 上海 |《PMCAFF 产品经理第一课》全面提升,微博副总裁、丁香园、1号店、淘宝、阿里巴巴产品总监最强分享...
- 工欲善其事 必先利其器
- air英语怎么读_如何用英语发音“Macbook Air”
- cocos2d-x-3.x 配置(1)win环境搭建
- Notification通知
- 牛客小白月赛3 I 排名【结构体排序/较复杂/细节】
- java压测请求线程数_jmeter压力测试 设置一秒发送一次请求,一秒两次请求
- Nvivo 12 Plus WIN版本丨中文英文 软件安装包下载 安装教程步骤丨WIN系统
- 索爱S318小蜜蜂扩音器性能如何?
- jpa mysql lob_Jpa加载Lob字段报Unable to access lob stream异常
- 【Android】achartengine的柱状图和饼状图的使用
- c语言表白情书作品,程序员一句话表白情书
- dubbo comsumer指定服务
- 【算法题】求有序数列中相邻数字之间的最大差值
- 16岁黑客发现Steam Store审核机制漏洞,可直接发布应用或游戏
- 【致远FAQ】致远OA启动不起来了(中集)
- UOJ#310. 【UNR #2】黎明前的巧克力
- 在js中对数值进行取整、四舍五入等方法汇总
热门文章
- 如何用Transformer来做目标检测?一文简述DERT及其变体
- AU R-CNN:利用专家先验知识进行表情运动单元检测的R-CNN模型
- 四篇NeurIPS 2019论文,快手特效中的模型压缩了解一下
- 机器学习理论《统计学习方法》学习笔记:第五章 决策树
- POJ 1696 Space Ant(极角排序)【计算几何】
- 什么是连续潮流cpf_2019童装秋冬潮流趋势报告:一文读懂童装潮流四大消费趋势...
- Python——文本中读取到【\ufeff】解决方案
- Spring Boot——[JPA 无法注入 JpaRepository 子接口问题]解决方案
- jointable 能加多个字段吗_Excel函数Countif、Countifs超级实用技巧,你真的都掌握吗?...
- springboot(2.2.4)配置druid的log4j2日志监控