【对象存储】SpringBoot集成华为云OBS对象存储

news/2024/10/18 21:24:06/

 总体思路是后端华为云OBS服务器申请授权信息并设置过期时间,后端再将授权信息以Map形式发给前端,前端将文件和授权信息直接发给华为云OBS服务器。

1. 引入依赖

		<dependency><groupId>com.huaweicloud</groupId><artifactId>esdk-obs-java</artifactId><version>3.20.6.1</version></dependency><dependency><groupId>com.huaweicloud</groupId><artifactId>esdk-obs-java-bundle</artifactId><version>3.23.9</version></dependency>

2. 向前端发送授权码

package com.example.meetings.controller;import com.obs.services.ObsClient;
import com.obs.services.model.*;
import org.springframework.web.bind.annotation.*;
import java.text.SimpleDateFormat;
import java.util.*;/*** @ClassName: ObsController* @Description: OBS服务器Controller* @Author: wuhuiju* @Version: 1.0*/
@RestController
@RequestMapping({ "/oss" })
public class HweiYunOBSController {/*** 完整域名为/oss/policy* 返回结果formParams.put("x-obs-acl", "public-read");formParams.put("content-type", "text/plain");formParams.put("accessId", accessId);formParams.put("policy", response.getPolicy());formParams.put("signature", response.getSignature());formParams.put("dir", dir);formParams.put("host", host);*/@CrossOrigin@GetMapping("/policy")public Map<String, Object>  policy() {// 访问IdString accessId = "************************";// 访问密钥String accessKey = "************************";// EndpointString endpoint = "************************";// 填写Bucket名称String bucket = "pic";// 填写Host地址,格式为https://bucketname.endpoint。String host = "https://" + bucket + "." + endpoint;// 设置上传到OSS文件的前缀,可置空此项SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd");// 生成文件夹,以日期为文件夹名String dateform = simpleDateFormat.format(new Date());String dir = "pic/" + dateform + "/";// 创建ObsClient实例// 使用永久AK/SK初始化客户端ObsClient obsClient = new ObsClient(accessId, accessKey,endpoint);try {// 生成基于表单上传的请求PostSignatureRequest request = new PostSignatureRequest();// 返回结果Map<String, Object> formParams = new HashMap<String, Object>();// 设置对象访问权限为公共读formParams.put("x-obs-acl", "public-read");// 设置对象MIME类型formParams.put("content-type", "image/jpeg");request.setFormParams(formParams);// 设置表单上传请求有效期,单位:秒request.setExpires(3600);PostSignatureResponse response = obsClient.createPostSignature(request);formParams.put("accessId", accessId);formParams.put("policy", response.getPolicy());formParams.put("signature", response.getSignature());formParams.put("dir", dir);formParams.put("host", host);return formParams;} catch (Exception e) {System.out.println(e.getMessage());}return null;}
}

http://www.ppmy.cn/news/1437735.html

相关文章

【排序算法】快速排序

快速排序&#xff08;Quick Sort&#xff09;是一种常用的排序算法&#xff0c;它采用分而治之的策略来对一个序列进行排序。快速排序的基本思想是选择一个基准元素&#xff08;通常是序列中的第一个元素&#xff09;&#xff0c;然后将序列中的其他元素分为两个子序列&#xf…

Kafka 3.x.x 入门到精通(03)——对标尚硅谷Kafka教程

Kafka 3.x.x 入门到精通&#xff08;03&#xff09;——对标尚硅谷Kafka教程 2. Kafka基础2.1 集群部署2.2 集群启动2.3 创建主题2.4 生产消息2.4.1 生产消息的基本步骤2.4.2 生产消息的基本代码2.4.3 发送消息2.4.3.1 拦截器2.4.3.1.1 增加拦截器类2.4.3.1.2 配置拦截器 2.4.3…

LS2K1000LA基础教程

基于LS2K1000LA的基础教程 by 南京工业大学 孙冬梅 于 2024.4.25 文章目录 基于LS2K1000LA的基础教程一、目的二、平台1.硬件平台2.软件平台 三、测试0.开发板开机及编译器配置0.1 开发板控制台0.2 虚拟机编译器配置 1. 简单应用编程1.helloworld.c2. fileio 文件操作3.proce…

Linux 解压报错

在linux上面解压压缩包&#xff0c;有可能遇到一下问题&#xff0c;现提供正确语句供参考 一、tar命令解压.zip文件 在使用tar命令解压.zip格式文件时&#xff0c;有时会遇到一下异常 gzip: stdin has more than one entry--rest ignored tar: Child returned status 2 ta…

MySQL 8.0.23 临时表空间文件ibtmp1暴增原因及解决方法

背景描述 同事反馈现场的MySQL8.0.23支撑库异常停止。分析发现是临时表空间过大撑爆了磁盘导致MySQL异常终止。 分析过程 查看MySQL版本 [rootsjjhpt182 mysql]# mysql -V mysql Ver 8.0.23 for Linux on x86_64 (MySQL Community Server - GPL) You have mail in /var/spool/m…

如何最大程度使用AWS?

随着云计算技术的不断发展&#xff0c;AWS已经成为众多企业的首选&#xff0c;为其提供了强大的基础设施和服务。那么如何最大程度地、灵活地利用AWS&#xff0c;成为许多企业专注的焦点。九河云作为AWS的合作伙伴&#xff0c;为读者们提供一些技巧和策略&#xff0c;帮助读者充…

c++高级篇(二) ——Linux下IO多路复用之select模型

什么是IO多路复用 前言 我们在Linux上服务端一般是要同时连接多个客户端进行通信&#xff0c;但是为每一个客户端连接创建一个进/线程&#xff0c;会消耗很多资源&#xff0c;一个1核2GB的虚拟机&#xff0c;大概只能创建100多个线程&#xff0c;但是我们经常使用网络知道,这…

全量知识系统 程序详细设计 “智能”分类及标注的主题词架构(QA百度文库)

今天聊聊全量知识系统 程序详细设计中对“智能”的解读。先概列如下: 机器智能MI&#xff08;计算智能-脑智&#xff09;<“部件part”>人工智能AI&#xff08;感知智能-心智&#xff09;<”组件group”>机体智能OI (认知智能-元智) <“零件order”> 每一…