首页 > 其他分享 >34、商品服务--品牌管理--OSS获取服务端签名

34、商品服务--品牌管理--OSS获取服务端签名

时间:2023-01-08 04:11:07浏览次数:39  
标签:String -- OSS respMap 34 put import oss

1、阿里云参考代码位置如下


2、我们单独创建一个模块,来编写有关第三方服务的代码
2.1) 注册中心和配置中心的相关配置
2.2)oss的配置编写

2.3)controller编写

package com.gulimall.thirdparty.controller;

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;

@RestController
public class OssController {
    @Autowired
    OSS ossClient;

    @Value("{spring.cloud.alicloud.access-key}")
    String accessId;
    @Value("{spring.cloud.alicloud.oss.endpoint}")
    String endpoint;

    @RequestMapping("/oss/policy")
    public Map<String, String> getSignature(){
        // 填写Bucket名称,例如examplebucket。
        String bucket = "dqh-gulimall";
        // 填写Host地址,格式为https://bucketname.endpoint。
        String host = "https://" + bucket + "." + endpoint;

        String date = new SimpleDateFormat("yyyy-MM-dd").format(new Date());

        // 设置上传到OSS文件的前缀,可置空此项。置空后,文件将上传至Bucket的根目录下。
        String dir = date + "/";

        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));
        } catch (Exception e) {
            System.out.println(e.getMessage());
        }

        return respMap;
    }
}

2.4)由于要进行跨域,所以我们把请求发送到网关,由网关转发到相关服务

标签:String,--,OSS,respMap,34,put,import,oss
From: https://www.cnblogs.com/morehair/p/17034036.html

相关文章

  • 寒假训练第一周
    寒假训练第一周1.6日codeforces训练赛A题MediumNumber这道题的思路很简单,主要是一个多次输入的条件。这道题解题方式有多种,我是通过一个sort函数进行排序,然后输出第二......
  • 机器学习 吴恩达 第三章 笔记
    三、线性代数回顾(LinearAlgebraReview)3.1矩阵与向量  矩阵的维数=矩阵的行数\(\times\)矩阵的列数  有时会用R表示矩阵,而\(R^{4\times2}\)表示所有4$\t......
  • UI Automation PowerShell Extensions使用,编写powershell脚本实现ui自动化操作 简单实
    借鉴这几个网站。使用PowerShellUI自动扩展操作应用(自动化)-PMP风格(hatenablog.com)UIAutomationPowerShellExtensions的Download(再分发)–code-lab.netPowe......
  • CS:APP--Chapter05 : optimizing program performance (part 1)
    标签(空格分隔):CS:APPprologueTheprimativeobjectofaprogrammerismakeitruncorrectlyevenfast.Notonlydoweensureotherscanmakesenseofit,buta......
  • 33、商品服务--品牌管理--OSS整合测试
    1、使用SDK进行上传就到达了如下地址,按照里面步骤来即可https://help.aliyun.com/document_detail/32008.htm?spm=a2c4g.11186623.0.0.6e0340c2gZddUH#conc......
  • PostGIS之几何有效性
    1.概述PostGIS是PostgreSQL数据库一个空间数据库扩展,它添加了对地理对象的支持,允许在SQL中运行空间查询PostGIS官网:AboutPostGIS|PostGISPostGIS官方教程:PostGIS......
  • 【Unity TIL】6. 如何判断两条线段是否相交
    AABB碰撞检测,也就是轴对齐碰撞检测,用平行于x,y轴的矩形表示物体。如何判断两个矩形是否相撞,可以通过分别判断x,y轴上的线段是否相交。假设线段分别为(s1,e1),(s2,e2),判......
  • Vue组件之间的通信方式都有哪些?
    一、组件间通信的概念我们通常把组件间通信这个词进行拆分组件通信都知道组件是vue最强大的功能之一,vue中每一个.vue我们都可以视之为一个组件通信指的是发......
  • 11.动态SQL
    什么是动态SQL:动态SQL就是指根据不同的条件生成不同的SQL语句if:这条语句提供了可选的查找文本功能。//动态sql--ifList<Blog>getBlog(Map<String,Object>map);<s......
  • 2023.1.7(Atcoder Beginner Contest 284)
    A.HappyNewYear2023Linkhttps://atcoder.jp/contests/abc284/tasks/abc284_dStatement将给定的\(N\)分解成\(N=p^2\cdotq\)的形式,其中\(p,q\)为两个不......