首页 > 其他分享 >aliyun oss对象存储服务的使用和配置

aliyun oss对象存储服务的使用和配置

时间:2023-07-16 22:57:24浏览次数:48  
标签:存储 endpoint String oss respMap aliyun put

 

引入依赖(依赖冲突可使用maven helper插件来排除,或者通过启动异常进行判断,或者看官方文档寻找答案)

 <dependency>
     <groupId>com.aliyun.oss</groupId>
     <artifactId>aliyun-sdk-oss</artifactId>
     <version>3.5.0</version>
     <exclusions>
         <exclusion>
             <artifactId>aliyun-java-sdk-core</artifactId>
             <groupId>com.aliyun</groupId>
         </exclusion>
     </exclusions>
 </dependency>
 <!-- https://mvnrepository.com/artifact/com.alibaba.cloud/aliyun-oss-spring-boot-starter -->
 <dependency>
     <groupId>com.alibaba.cloud</groupId>
     <artifactId>aliyun-oss-spring-boot-starter</artifactId>
     <version>1.0.0</version>
     <exclusions>
         <exclusion>
             <groupId>com.aliyun.oss</groupId>
             <artifactId>aliyun-sdk-oss</artifactId>
         </exclusion>
     </exclusions>
 </dependency>

key相关的配置

 alibaba:
   cloud:
     access-key: *********
     secret-key: *********
     oss:
       endpoint: oss-cn-beijing.aliyuncs.com
       bucket: gulimall-huo

controller相关代码(这里为通过后端获取签名后直传方式)

 @RestController
 public class OSSController {
     @Resource
     private OSS ossClient;
     // 阿里云账号AccessKey拥有所有API的访问权限,风险很高。强烈建议您创建并使用RAM用户进行API访问或日常运维,请登录RAM控制台创建RAM用户。
     @Value("${alibaba.cloud.access-key}")
     String accessId;
     @Value("${alibaba.cloud.oss.endpoint}")
     // Endpoint以华东1(杭州)为例,其它Region请按实际情况填写。
     String endpoint;
     @Value("${alibaba.cloud.secret-key}")
     String accessKey;
     @Value("${alibaba.cloud.oss.bucket}")
     // 填写Bucket名称,例如examplebucket。
     String bucket;
     @RequestMapping(value = "/oss/policy")
     public R policy(){
 ​
         // 填写Host地址,格式为https://bucketname.endpoint。
         String host = "https://" + bucket + "." + endpoint;
         
         // 用每一天的时间日期当文件夹
          String format = new SimpleDateFormat("yyyy-MM-dd").format(new Date());
         // 设置上传到OSS文件的前缀,可置空此项。置空后,文件将上传至Bucket的根目录下。
         String dir = format+"/";
         Map<String, String> respMap = null;
         // 创建ossClient实例。
         OSS ossClient = new OSSClientBuilder().build(endpoint, accessId, accessKey);
         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<>();
             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());
         }
 ​
         return R.ok().put("data",respMap);
     }
 }

标签:存储,endpoint,String,oss,respMap,aliyun,put
From: https://www.cnblogs.com/huoziqi/p/17558769.html

相关文章

  • MySQL 索引、事务与存储引擎
    目录一、索引1.概念2.作用3.副作用4.创建索引的原则依据5.优化6.分类二、事务1.事务的概念2.事务的特点(1)原子性(2)一致性(3)隔离性(4)持久性3.扩展事务之间的相互影响分为几种4.Mysql及事物隔离级别5.事务控制语句6.使用set设置控制事务三、存储引擎一、索引1.概念是......
  • redis 存储不重复列表
    实现Redis存储不重复列表简介在本文中,我将向你展示如何使用Redis来存储不重复列表。首先,我们需要明确什么是Redis和不重复列表。Redis是一个开源的高性能内存数据库,它提供了多种数据结构和功能,以支持各种应用场景。不重复列表是一个数据结构,其中每个元素只出现一次。在Redis中,我......
  • redis set存储对象
    如何实现RedisSet存储对象概述在Redis中,Set是一种无序且不重复的数据结构,它可以存储多个元素,且操作效率非常高。如果我们想要将对象存储到Redis的Set中,我们需要进行一些额外的处理。本文将详细介绍如何使用Redis来实现Set存储对象的功能。准备工作在开始之前,确保你已经安装了R......
  • 高并发的哲学原理(七)-- 最难以解决的单点:数据库以及它背后的存储
    前面六篇文章,我们解决了web服务的百万QPS问题,从本文开始,我们将用三篇文章,尝试构建出百万QPS后端系统所需要的数据库。首先要明确,这里的数据库指的是关系型数据库,即满足ACID原则并用SQL语言进行操作的持久性(掉电数据不丢)数据库。当然,在追求高并发的过程中,我们将不可避免......
  • 数据库(SQL注入问题、视图、触发器、事务、存储过程、内置函数、流程控制、索引)
    SQL注入问题SQL注入的原因:由于特殊符号的组合会产生特殊的效果 实际生活中,尤其是在注册用户名的时候会非常明显的提示你很多特殊符号不能用,会产生特殊的效果。结论:涉及到敏感数据部分,不要自己拼接,交给现成的方法拼接即可。importpymysql#链接MySQL服务端conn=pymysql.......
  • 5 存储器层次结构
    到目前为止,在对系统的研究中,我们依赖于一个简单的计算机系统模型,CPU执潜令,而存能器系统为CPU存放指令和数据。在简单校型中,存体语系特是不以热的字节数组,而CPU能够在一个常数时间内访问每个存储器位置,组然花然为正露排个有效的模型,但是它没有反映现代系统实际工作的方式。实际上,......
  • 自建sqlserver迁移到aliyun的rds for sqlserver实战
    一、背景有些客户有上云的需求,需要把线下自建的sqlserver迁移至aliyun的rdsforsqlserver。大家第一时间想到的是用dts工具,根据工作经验,DTS迁移mysql类的数据库比较成熟,但是迁移sqlserver之类的会有问题。首先面临的一个问题就是源库日志膨胀的问题,也就是说是迁移过程中,源库的日......
  • 搭建NFS存储服务器--基于CentOS7系统
    一、NFS简介NFS是NetworkFileSystem的缩写,顾名思义就是网络文件存储系统,它最早是由Sun公司发展出来的,也是FreeBSD支持的文件系统中的一个,它允许网络中的计算机之间通过TCP/IP网络共享资源。通过NFS,我们本地NFS的客户端应用可以透明地读写位于服务端NFS服务器上的......
  • sql server 练习:存储过程+临时表+游标
    1、题目要求编写一个存储过程spGetTest统计T_Test表的数据,执行输出结果如下图:2、数据ifnotobject_id('T_Test')isnull--判断表是否存在droptableT_Test--删除表go--创建用户金额发生表createtableT_Test(fUser_Namenvarchar(40),--用户名称......
  • 2023-07-14:讲一讲Kafka与RocketMQ中存储设计的异同?
    2023-07-14:讲一讲Kafka与RocketMQ中存储设计的异同?答案2023-07-14:在Kafka中,文件的布局采用了Topic/Partition的方式,每个分区对应一个物理文件夹,且在分区文件级别上实现了顺序写入。然而,当一个Kafka集群拥有大量的主题和每个主题拥有数百个分区时,在高并发写入消息的情况下,IO操作......