第一步、开启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对象存储服务相关推荐

  1. 阿里云对象存储服务OSS前后联调

    阿里云对象存储服务OSS前后联调 1.为什么要引入阿里云对象存储服务(OSS)?有什么好处? 1.1.什么是对象存储OSS 1.2.OSS工作原理 2.阿里云对象存储-普通上传方式 2.1.时序图 2 ...

  2. 阿里云OSS | 对象存储服务快速入门 | 参考官方文档实现使用JavaSDK上传文件 | 本地上传与web上传案例

    参考文档 : 点击查看 文章目录 运行环境 一.OSS相关概念 1.1 Storage Class 存储类型 1.2 Bucket 存储空间 1.3 Object 对象 1.4 Region 地域 1 ...

  3. 阿里云OSS——对象存储服务(工具)

    阿里云OSS--对象存储服务(工具) 一.依赖 二.yaml配置 三.OSS工具类 四.demo演示 4.1 SpringBoot启动类 4.2 Controller接口 4.3 swagger测试 ...

  4. 配置阿里云OSS对象存储服务

    配置阿里云OSS对象存储服务 导入阿里云OSS依赖 <dependency><groupId>com.aliyun.oss</groupId><artifac ...

  5. 阿里云OSS(对象存储服务)简介

    最近公司想要使用阿里云OSS来存储精准客流图片,所以提前熟悉一下,做一个记录 注:阿里云官方文档已经很详细的阐述了OSS.以及开发流程,本文大多都是参考官方文档 OSS官方介绍地址:https://h ...

  6. 开发工具篇第八讲:阿里云OSS对象存储服务

    本文是开发工具篇第八讲:阿里云对象存储服务(Object Storage Service,简称 OSS),具有与平台无关的RESTful API接口,您可以在任何应用.任何时间.任何地点存储和访问任意 ...

  7. 阿里OSS对象存储,实现图片上传进度显示ProgressListener;

    想了解阿里OSS对象存储,实现图片上传的内容的可看我的另一篇博客,博客中有完整代码,这篇博客是以上一篇阿里OSS对象存储博客为基础,只写一些与进度有关的内容,细心往下看js代码中有需要注意的地方! 实 ...

  8. OSS(对象存储服务)与 AWS S3(Amazon Simple Storage Service)

    1. AWS S3对象存储 Amazon Simple Storage Service (Amazon S3) 是一种面向 Internet 的存储服务.您可以通过 Amazon S3 随时在 Web ...

  9. 阿里oss对象存储使用、阿里oss对象存储用法

    阿里oss对象存储开通配置参照:https://blog.csdn.net/weixin_42257984/article/details/124684867 https://blog.csdn.ne ...

最新文章

  1. 使用.htaccess删除.html扩展名_Visual Studio Code | 从下载安装到使用!
  2. 一次哔哩哔哩面试经历,真香!
  3. mysql数据库主从同步配置教程--数据库同步
  4. 统计学出身但编程一般,该选择数据分析还是挖掘算法?
  5. shape的各种获取、更改以及设置方式辨析
  6. 5G有多恐怖?几秒钟可下载整部电影
  7. 一文带你了解Java Agent
  8. 乱码 转ios_王者荣耀:转区数量提升25倍,教你解决检测异常,IOS也有艾琳了
  9. fun函数python_Python函数
  10. CODE[VS]1012 最大公约数和最小公倍数问题
  11. PHP使用empty检查函数返回结果时报Fatal error: Can't use function return value in write context的问题...
  12. C++开发工程师的薪资和未来发展
  13. 没有安装gcc,导致提示configure cannot guess build type; you must specify one
  14. 再谈PHP从入门到精通需要几年
  15. ArcGIS Pro 关于地震数据可视化制作流程(附练习数据下载)
  16. oracle收款凭证做错月份,上个月的银行凭证做错了怎么办
  17. 带有CAN模块通讯的labview转化为应用程序(exe)CAN模块启动失败问题解决办法
  18. dw网页设计期末设计一个网页_《网页设计与制作Dreamweaver》期末考试试题
  19. MIME类型是什么?包含哪些类型?
  20. 谁偷了我的奶酪(上)

热门文章

  1. linux去掉锁屏密码,使用ADB SHELL清除联想A390t的锁屏密码
  2. CSS布局与定位,flow流,float
  3. 【HaaS Python 硬件积木】 BMP280气压传感器
  4. numpy数组array的shape属性-1维、2维···
  5. 项目实训第一周2-学习系统的使用
  6. 数据结构(二)----线性表(List)链式存储结构(1)
  7. Android 8.1 允许安装未知来源权限/允许来自此来源的应用
  8. 【开关电源】降压变换器(BUCK)的断续模式建模
  9. Python轻松搞定免费语音合成,利用百度AI为短视频配音
  10. 8.4 内存映射文件