使用阿里云对象OSS存储服务

  • 由服务器进行上传
    • 在阿里云官网进行开通OSS对象服务
    • 创建你的Bucket
    • 开启跨域功能
    • 创建秘钥且添加权限以及服务器端配置
    • 代码
  • 由客户端进行上传(服务器Base64加密签名)(推荐)
    • 代码

由服务器进行上传

由服务器直接进行上传其实我们是不推荐的,原因有以下几点:
  1. 在高并发的情况下,大量的图片由客户端传输给服务端,再由服务端上传至云端或者是分布式服务器(HDFS)非常影响服务器性能。
  2. 图片的传输不管是在微服务下还是单机模式下,基本上都是依靠HTTP协议来进行传输,当然也有用dataURL的方式存储的,但是现在图片的细粒度和像素在不断增加,大小也在不断增加,所以更多的还是依靠网络传输协议,所以大量的网络传输会造成带宽的拥挤。
  3. 在我前几篇博文中提到,大量的网络传输(测试数据在100GB左右)即使是在分布式计算框架中仍然会造成管道无法相应,且会造成CPU软死锁

在阿里云官网进行开通OSS对象服务

登录阿里云官网,登录你的账户。

开通你的OSS服务。

创建你的Bucket

Bucket可以理解成仓库,你以后所有的图片都将存放到这里。
上面根据自己的需求来填,不过像版本控制或者是HDFS基本上不用开通。
唯一修改的就是读写权限,名字和地域随便填写。

创建完之后有以下几个参数需要你弄明白。

-外网访问: EndPoint:地域节点,会在服务器端来使用。
Bucket域名:客户端访问图片的路径

开启跨域功能

如果你配置了网关服务和服务注册中心,那么需要开启跨域功能。
在概览的基础设置中设置跨域功能

创建秘钥且添加权限以及服务器端配置


统一在服务器端配置文件中配置。

代码

简要说明一下,需要在Maven引入spring-cloud-starter-alicloud-oss依赖,

         <groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alicloud-oss</artifactId>
// /*"1609"为你上传后的图片名字,FileInputStream为上传路径 */@AutowiredOSSClient ossClient;@Testpublic void testUpload() throws FileNotFoundException {InputStream inputStream = new FileInputStream("/Users/lvjiazhi/Downloads/截屏2022-07-21 11.45.38.png");ossClient.putObject("mall-ljz","1609",inputStream);ossClient.shutdown();}

由客户端进行上传(服务器Base64加密签名)(推荐)

步骤与上述相同,只是在代码片段有所不同,如果上述步骤做完了,就请复制下面代码段。

代码

/*根据你自己的请求路径来写然后通过这个请求会返回给前段一段加密后的秘钥,然后前段拿着秘钥就可以访问你的阿里云了
*/
@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;//https://gulimall-hello.oss-cn-beijing.aliyuncs.com/hahaha.jpg@RequestMapping("/oss/policy")public R policy() {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 = format + "/"; // 用户上传文件时指定的前缀。Map<String, String> respMap = null;try {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 = 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());}}
}

阿里云OSS对象存储服务的使用相关推荐

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

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

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

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

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

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

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

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

  5. 阿里云OSS对象存储服务上传失败问题之一

    简介: OSS是阿里云提供一个对象存储服务,有着稳定高效的特点,但在操作时有些问题还是必须要注意一下的 今天在进行上传头像的操作时,发生了一个OSS连接时出现的问题,导致头像上传失败,问题的样式如下图 ...

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

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

  7. 阿里云OSS对象存储服务购买与基础使用指南

    对象存储服务(Object Storage Service,简称OSS),是基于阿里云飞天分布式系统的海量.安全和高可靠的云存储服务.简单来说,OSS就是一个可以上传.下载.分享文件的服务,这一点从实 ...

  8. java oss 批量传输_阿里云OSS对象存储,服务端签名后直传阿里云OSS

    继续上一章文章,这次要操作的是,浏览器请求服务要到签名后直传给OSS对象存储. 1.写好服务端的方法,传给前台相应的密钥 @Resource OSSClient ossClient; @Value(& ...

  9. 阿里云OSS对象存储-图文详解

    阿里云OSS对象存储 认识OSS 一.创建Bucket 二.后台服务接口编写 三.接口测试 认识OSS 在实际的项目中,经常要用到上传图片的地方,阿里云的OSS对象存储,可以很好的将我们上传的图片存储 ...

最新文章

  1. [转]Mysql中的SQL优化与执行计划
  2. 装饰者模式 将子类当做构造器参数传递进去 ,并重写子类的方法同时增加子类的功能 调用调用重写的子类的方法...
  3. vscode安装设置go
  4. HarmonyOS之数据管理·关系型数据库的应用
  5. 多功能节点连线绘图控件Nevron Diagram for .NET使用方法及下载地址
  6. 转转集团二手双11大促:长沙用户“秒杀”99新iPhone12成首单
  7. 相比JPG,PNG矢量图片才是设计师的首选素材
  8. 自定义Hibernate Validator规则注解
  9. P1421 小玉买文具【入门题】
  10. JDK、JRE、javac和JVM的关系
  11. 直方图中最大的矩形(单调栈2)
  12. Bailian2808 校门外的树【基础】
  13. 英文拼写及语法检查软件
  14. Linux下MySQL数据库的备份与还原
  15. vsftpd+mysql使用
  16. 银联网关支付接口规范
  17. VMware 设置虚拟机全屏
  18. vtk 中vtkMapper的各函数解析
  19. 利用条形码生成器在Word 2013中轻松制作条形码的方法
  20. 华为智能音响2代鸿蒙,99999元!华为全屋智能方案来了:鸿蒙生态是亮点

热门文章

  1. 在一个给定范围的区间内找到该区间所有的质数(素数)
  2. tinymp3 MP3编解码库的使用
  3. 使用ES Rally出错:certificate verify failed: self signed certificate in certificate chain
  4. 访问他人mysql数据库_怎么连接访问他人的MYSQL数据库?
  5. 陈力:传智播客古代 珍宝币 泡泡龙游戏开发第42讲:PHP数据库开发案例
  6. 给自己作的“程序员键盘”,DIY可编程机械键盘
  7. gmssl 生成SM2证书、加密、解密、签名、验签
  8. BalalaPower个人解题心得
  9. 《百思不得姐》项目知识点总结
  10. easypoi教程_easypoi 读取 Excel 简单应用