SpringBoot阿里云OSS文件上传实例

SpringBoot实现阿里云OSS文件上传
部署运行你感兴趣的模型镜像

1. 背景

创建用户时需要进行头像的上传,可以通过使用阿里云OSS的SDK来实现云文件的上传及读取。

1.1. 阿里云OSS介绍

  • 对象存储OSS(Object Storage Service)是阿里云提供的海量、安全、低成本、高持久的云存储服务。其数据设计持久性不低于99.9999999999%(12个9),服务设计可用性不低于99.995%。
  • OSS具有与平台无关的RESTful API接口,您可以在任何应用、任何时间、任何地点存储和访问任意类型的数据。
  • 提供标准、低频访问、归档和冷归档四种存储类型,全面覆盖从热到冷的各种数据存储场景:

2. 前期准备

2.1. 创建Bukket

控制台搜索对象存储OSS进入。

左侧导航栏选择Bucket列表。

创建Bucket需要记住Endpoint以及Bucket名称,以便后续在配置文件中使用,Endpoint可以在bucket详情中点击概览进行查看。

2.2. 创建AccessKeyId以及AccessSecret

创建认证私钥可以通过多种方式,这里通过官方开发文档中的ROS脚本进行快速创建。在资源编排ROS控制台的创建资源栈页面的安全确认下,勾选确认,然后单击创建

到现在一共得到了四个参数,分别为Endpoint、Bucket名称、AccessKeyId、AccessKeySecret

2.3. 注意事项

Bukket创建完成后默认为阻止公共进行访问,若需要自己的本地前端访问数据,可以将阻止公共读关闭,并授权ACL为公共读

3. 代码实现

3.1. 配置文件

本文后端使用的是SpringBoot框架,首先创建阿里云的配置文件。

import lombok.Data;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.context.annotation.Configuration;
import org.springframework.stereotype.Component;

@Data
@Configuration
@ConfigurationProperties(prefix = "aliyun.oss")
public class AliOSSProperties {
    // 阿里云OSS
    private String endpoint;
    // 阿里云账号AccessKey拥有所有API的访问权限
    private String accessKeyId;
    // 阿里云账号AccessKey的SecretKey
    private String accessKeySecret;
    // 阿里云OSS存储空间名称
    private String bucketName;
}

application.yml配置如下:

aliyun:
  oss:
    endpoint: 前面提到的Endpoint
    bucket-name: 你创建的Bukket名称
    access-key-id: 用户授权id
    access-key-secret: 用户授权秘钥

3.2. 定义上传工具类

import com.aliyun.oss.OSS;
import com.aliyun.oss.OSSClient;
import com.aliyun.oss.OSSClientBuilder;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import org.springframework.web.multipart.MultipartFile;

import java.io.InputStream;
import java.util.UUID;

@Component
public class AliOSSUpload {
    @Autowired
    private AliOSSProperties  aliOSSProperties;

    /**
     * aliyun文件上传
     * @param multipartFile
     * @return
     */
    public String uploadFile(MultipartFile multipartFile) throws Exception{
        //获取文件输入流
        InputStream inputStream = multipartFile.getInputStream();
        //创建文件名
        String fileName = UUID.randomUUID() + multipartFile.getOriginalFilename();
        //上传文件到OSS
        OSS ossClient = new OSSClientBuilder().build(
                aliOSSProperties.getEndpoint(),
                aliOSSProperties.getAccessKeyId(),
                aliOSSProperties.getAccessKeySecret()
        );
        ossClient.putObject(aliOSSProperties.getBucketName(), fileName, inputStream);
        //文件访问路径
        String url = "https://" + aliOSSProperties.getBucketName()
                + "." + aliOSSProperties.getEndpoint()
                + "/" + fileName;

        //关闭OSSClient
        ossClient.shutdown();
        //返回上传路径
        return url;

    }
}

您可能感兴趣的与本文相关的镜像

GPT-oss:20b

GPT-oss:20b

图文对话
Gpt-oss

GPT OSS 是OpenAI 推出的重量级开放模型,面向强推理、智能体任务以及多样化开发场景

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值