当前位置: 代码网 > it编程>编程语言>Java > 【对象存储】SpringBoot集成华为云OBS对象存储

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

2024年07月31日 Java 我要评论
总体思路是后端向华为云OBS服务器申请授权信息并设置过期时间,后端再将授权信息以Map形式发给前端,前端将文件和授权信息直接发给华为云OBS服务器。

 总体思路是后端向华为云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() {
        // 访问id
        string accessid = "************************";

        // 访问密钥
        string accesskey = "************************";

        // endpoint
        string 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;
    }
}

(0)

相关文章:

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论

验证码:
Copyright © 2017-2025  代码网 保留所有权利. 粤ICP备2024248653号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com