【SpringBoot】OSS 对象存储的应用

本文主要介绍了如何在SpringBoot应用中集成阿里云OSS服务,包括依赖引入、配置信息设置,并展示了Utils工具类和服务实现类的基本结构,用于实现文件的简单上传和通过签名URL进行临时授权的操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前言

对象存储文档完善,内容复杂。这里博主只做简单上传使用签名URL进行临时授权的操作讲解。

参考:阿里云文档

前置工作

依赖引入

pom.xml 中引入阿里云 OSS 依赖:

<dependency>
    <groupId>com.aliyun.oss</groupId>
    <artifactId>aliyun-sdk-oss</artifactId>
    <version>3.10.2</version>
</dependency>

信息配置

application.properties 中添加如下内容:

oss.endpoint=地域节点
oss.access-key-id=你的AccessKeyID
oss.access-key-secret=秘钥
oss.bucket-name=默认的存储桶名称
# 下面这个可以没有,仅作为上传文件存储时的根目录
oss.root-path=blog/

具体实现

Utils

这里我将 OSS 的操作写成了工具类。

基本结构:

/**
 * @program: blog_api
 * @description: OSS对象存储工具类
 * @author: z2devil
 * @create: 2021-07-14
 **/
@Component
public class OSSUtil {

    /**
     * 地域节点
     */
    @Value("${oss.endpoint}")
    private String endpoint;

    /**
     * 你的AccessKeyID
     */
    @Value("${oss.access-key-id}")
    private String accessKeyId;

    /**
     * 秘钥
     */
    @Value("${oss.access-key-secret}")
    private String accessKeySecret;

    /**
     * 默认的存储桶名称
     */
    @Value("${oss.bucket-name}")
    private String bucketName;


    /**
     * 存放对象
     * @param path
     * @param stream
     */
    public void putObject(String path, InputStream stream) {
        OSS ossClient = new OSSClientBuilder().build(endpoint, accessKeyId, accessKeySecret);
        ossClient.putObject(bucketName, path, stream);
        ossClient.shutdown();
    }

    /**
     * 获取Url
     * @param path
     * @return
     */
    public String getUrl(String path) {
        OSS ossClient = new OSSClientBuilder().build(endpoint, accessKeyId, accessKeySecret);
        // 设置这个文件地址的有效时间(3600秒)
        Date expiration = new Date(new Date().getTime() + 3600L * 1000);
        String url = ossClient.generatePresignedUrl(bucketName, path, expiration).toString();
        ossClient.shutdown();
        return url;
    }

}

Service实现类

基本结构:

/**
 * <p>
 * 文件表 服务实现类
 * </p>
 *
 * @author z2devil
 * @since 2021-05-19
 */
@Service
@RequiredArgsConstructor
public class FileServiceImpl extends ServiceImpl<FileMapper, File> implements IFileService {

    private final OSSUtil ossUtil;

    private final FileMapper fileMapper;

    /**
     * 根目录
     */
    @Value("${oss.root-path}")
    private String rootPath;

    @Override
    @SneakyThrows
    public void upload(MultipartFile file) {
        String fileType = file.getContentType().substring(0, file.getContentType().indexOf("/"));
        ossUtil.putObject(rootPath+"指定你的路径", file.getInputStream());
    }

    @Override
    public String getUrl(String path) {
        String url = = ossUtil.getUrl(path);
        return url;
    }

}

接下来就是 Controller 层的编写。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值