阿里----OSS对象存储服务
第一步、开启OSS服务,创建一个Bucket、创建一个用户并开启OSS权限
名称和地区根据自己需求填写,除了括出来的其他默认即可,创建bucket
创建一个AccessKey用户
创建好后,再次点击AccessKey管理
获取下面的两个字段信息,后面需要使用它来进行OSS对象管理
开启OSS跨域
第二步、引入依赖、添加配置
引入依赖
<!-- spring-cloud-starter-alicloud-oss OSS对象存储服务-->
<dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alicloud-oss</artifactId><version>${alicloud-oss.version}</version>
</dependency>
添加配置
spring:application:name: cloud-osscloud:alicloud:access-key: OSS用户的AccessKey IDsecret-key: OSS用户的AccessKey SECREToss:endpoint: 访问的节点域名,例如:oss-cn-shenzhen.aliyuncs.combucket: yumbo-oss #这个根据自己的bucket名称填写,启动器没有本身没有这个配置
OSS的文档地址
Github文档地址(https://github.com/alibaba/spring-cloud-alibaba/blob/master/spring-cloud-alibaba-docs/src/main/asciidoc-zh/oss.adoc)
后端签名后通过javascript直传
文档地址
签名信息获取
编写一个Controller
示例代码如下
import com.alibaba.fastjson.JSONObject;
import com.aliyun.oss.OSSClient;
import com.aliyun.oss.common.utils.BinaryUtil;
import com.aliyun.oss.model.MatchMode;
import com.aliyun.oss.model.PolicyConditions;
import org.springframework.web.bind.annotation.CrossOrigin;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
import java.io.UnsupportedEncodingException;
import java.sql.Date;
import java.time.LocalDate;
import java.util.LinkedHashMap;
import java.util.Map;
import java.util.TimeZone;@RestController
public class OssController {@GetMapping("/asign")@CrossOrigin //开启跨域访问public String policyAsign() {String accessId = ""; // 请填写您的 AccessKeyId。String accessKey = ""; // 请填写您的 AccessKeySecret。String endpoint = ""; // 请填写您的 endpoint。String bucket = ""; // 请填写您的 bucketname 。String host = "http://" + bucket + "." + endpoint; // host的格式为 bucketname.endpoint// callbackUrl为 上传回调服务器的URL,请将下面的IP和Port配置为您自己的真实信息。TimeZone.setDefault(TimeZone.getTimeZone("Asia/Shanghai"));String dir = LocalDate.now().toString();// 用户上传文件时指定的前缀。我这里设置日期为前缀OSSClient client = new OSSClient(endpoint, accessId, accessKey);long expireTime = 30;long expireEndTime = System.currentTimeMillis() + expireTime * 1000;Date expiration = new Date(expireEndTime);PolicyConditions policyConds = new PolicyConditions();policyConds.addConditionItem(PolicyConditions.COND_CONTENT_LENGTH_RANGE, 0, 1048576000);policyConds.addConditionItem(MatchMode.StartWith, PolicyConditions.COND_KEY, dir);String postPolicy = client.generatePostPolicy(expiration, policyConds);byte[] binaryData = new byte[0];try {binaryData = postPolicy.getBytes("utf-8");} catch (UnsupportedEncodingException e) {e.printStackTrace();}String encodedPolicy = BinaryUtil.toBase64String(binaryData);String postSignature = client.calculatePostSignature(postPolicy);Map<String, Object> respMap = new LinkedHashMap<String, Object>();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));JSONObject jasonCallback = new JSONObject();
// jasonCallback.put("callbackUrl", callbackUrl);jasonCallback.put("callbackBody","filename=${object}&size=${size}&mimeType=${mimeType}&height=${imageInfo.height}&width=${imageInfo.width}");jasonCallback.put("callbackBodyType", "application/x-www-form-urlencoded");String base64CallbackBody = BinaryUtil.toBase64String(jasonCallback.toString().getBytes());respMap.put("callback", base64CallbackBody);return new JSONObject(respMap).toJSONString();//将签名数据暴露出去}
}
为了聚合服务,所有的请求都经过网关先过滤
所以添加一个路由配置
spring:cloud:gateway:routes:- id: third_party_routeuri: lb://要负载均衡到的Oss服务名predicates:- Path=/api/thirdparty/**filters:- RewritePath=/api/thirdparty/(?<segment>.*),/$\{segment}
阿里----OSS对象存储服务相关推荐
- 阿里云对象存储服务OSS前后联调
阿里云对象存储服务OSS前后联调 1.为什么要引入阿里云对象存储服务(OSS)?有什么好处? 1.1.什么是对象存储OSS 1.2.OSS工作原理 2.阿里云对象存储-普通上传方式 2.1.时序图 2 ...
- 阿里云OSS | 对象存储服务快速入门 | 参考官方文档实现使用JavaSDK上传文件 | 本地上传与web上传案例
参考文档 : 点击查看 文章目录 运行环境 一.OSS相关概念 1.1 Storage Class 存储类型 1.2 Bucket 存储空间 1.3 Object 对象 1.4 Region 地域 1 ...
- 阿里云OSS——对象存储服务(工具)
阿里云OSS--对象存储服务(工具) 一.依赖 二.yaml配置 三.OSS工具类 四.demo演示 4.1 SpringBoot启动类 4.2 Controller接口 4.3 swagger测试 ...
- 配置阿里云OSS对象存储服务
配置阿里云OSS对象存储服务 导入阿里云OSS依赖 <dependency><groupId>com.aliyun.oss</groupId><artifac ...
- 阿里云OSS(对象存储服务)简介
最近公司想要使用阿里云OSS来存储精准客流图片,所以提前熟悉一下,做一个记录 注:阿里云官方文档已经很详细的阐述了OSS.以及开发流程,本文大多都是参考官方文档 OSS官方介绍地址:https://h ...
- 开发工具篇第八讲:阿里云OSS对象存储服务
本文是开发工具篇第八讲:阿里云对象存储服务(Object Storage Service,简称 OSS),具有与平台无关的RESTful API接口,您可以在任何应用.任何时间.任何地点存储和访问任意 ...
- 阿里OSS对象存储,实现图片上传进度显示ProgressListener;
想了解阿里OSS对象存储,实现图片上传的内容的可看我的另一篇博客,博客中有完整代码,这篇博客是以上一篇阿里OSS对象存储博客为基础,只写一些与进度有关的内容,细心往下看js代码中有需要注意的地方! 实 ...
- OSS(对象存储服务)与 AWS S3(Amazon Simple Storage Service)
1. AWS S3对象存储 Amazon Simple Storage Service (Amazon S3) 是一种面向 Internet 的存储服务.您可以通过 Amazon S3 随时在 Web ...
- 阿里oss对象存储使用、阿里oss对象存储用法
阿里oss对象存储开通配置参照:https://blog.csdn.net/weixin_42257984/article/details/124684867 https://blog.csdn.ne ...
最新文章
- 使用.htaccess删除.html扩展名_Visual Studio Code | 从下载安装到使用!
- 一次哔哩哔哩面试经历,真香!
- mysql数据库主从同步配置教程--数据库同步
- 统计学出身但编程一般,该选择数据分析还是挖掘算法?
- shape的各种获取、更改以及设置方式辨析
- 5G有多恐怖?几秒钟可下载整部电影
- 一文带你了解Java Agent
- 乱码 转ios_王者荣耀:转区数量提升25倍,教你解决检测异常,IOS也有艾琳了
- fun函数python_Python函数
- CODE[VS]1012 最大公约数和最小公倍数问题
- PHP使用empty检查函数返回结果时报Fatal error: Can't use function return value in write context的问题...
- C++开发工程师的薪资和未来发展
- 没有安装gcc,导致提示configure cannot guess build type; you must specify one
- 再谈PHP从入门到精通需要几年
- ArcGIS Pro 关于地震数据可视化制作流程(附练习数据下载)
- oracle收款凭证做错月份,上个月的银行凭证做错了怎么办
- 带有CAN模块通讯的labview转化为应用程序(exe)CAN模块启动失败问题解决办法
- dw网页设计期末设计一个网页_《网页设计与制作Dreamweaver》期末考试试题
- MIME类型是什么?包含哪些类型?
- 谁偷了我的奶酪(上)
热门文章
- linux去掉锁屏密码,使用ADB SHELL清除联想A390t的锁屏密码
- CSS布局与定位,flow流,float
- 【HaaS Python 硬件积木】 BMP280气压传感器
- numpy数组array的shape属性-1维、2维···
- 项目实训第一周2-学习系统的使用
- 数据结构(二)----线性表(List)链式存储结构(1)
- Android 8.1 允许安装未知来源权限/允许来自此来源的应用
- 【开关电源】降压变换器(BUCK)的断续模式建模
- Python轻松搞定免费语音合成,利用百度AI为短视频配音
- 8.4 内存映射文件