SpringBoot阿里云OSS文件上传实例

本文涉及的产品
对象存储 OSS,20GB 3个月
对象存储 OSS,内容安全 1000 次 1年
对象存储OSS,敏感数据保护2.0 200GB 1年
简介: 本文介绍了通过阿里云OSS实现用户头像上传的功能。首先概述了OSS的特点,如高持久性、RESTful API支持及多种存储类型。接着详细描述了前期准备步骤,包括注册阿里云账号、实名认证、开通OSS服务、创建Bucket及AccessKey。注意事项中提到需调整Bucket的访问权限以支持前端访问。最后提供了基于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;
    }
}
相关实践学习
借助OSS搭建在线教育视频课程分享网站
本教程介绍如何基于云服务器ECS和对象存储OSS,搭建一个在线教育视频课程分享网站。
目录
相关文章
|
存储 Java 对象存储
springboot配置阿里云OSS存储实现文件上传下载功能
【1月更文挑战第1天】springboot配置阿里云OSS存储实现文件上传下载功能
3393 3
|
17天前
|
Web App开发 监控 安全
OSS客户端签名直传实践:Web端安全上传TB级文件方案(含STS临时授权)
本文深入解析了客户端直传技术,涵盖架构设计、安全机制、性能优化等方面。通过STS临时凭证与分片上传实现高效安全的文件传输,显著降低服务端负载与上传耗时,提升系统稳定性与用户体验。
111 2
|
2月前
|
缓存 NoSQL 关系型数据库
美团面试:MySQL有1000w数据,redis只存20w的数据,如何做 缓存 设计?
美团面试:MySQL有1000w数据,redis只存20w的数据,如何做 缓存 设计?
美团面试:MySQL有1000w数据,redis只存20w的数据,如何做 缓存 设计?
|
弹性计算 前端开发 小程序
微信小程序上传文件至阿里云OSS直传(java后端签名+前端直传)
当前的通用文件上传方式是通过前端上传到服务器,再由服务器转存至对象存储。这种方式在处理小文件时效率尚可,但大文件上传因受限于服务器带宽,速度较慢。例如,一个100MB的文件在5Mbps带宽的阿里云ECS上上传至服务器需160秒。为解决此问题,可以采用后端签名的方式,使微信小程序直接上传文件到阿里云OSS,绕过服务器中转。具体操作包括在JAVA后端引入相关依赖,生成签名,并在微信小程序前端使用这个签名进行文件上传,注意设置正确的请求头和formData参数。这样能提高大文件上传的速度。
2246 1
|
Java 开发工具 对象存储
SpringBoot项目中使用阿里云Oss上传文件
SpringBoot项目中使用阿里云Oss上传文件
920 1
|
11月前
|
Java 对象存储 数据安全/隐私保护
这才是企业级的 oss-spring-boot-starter,开箱即用!
【8月更文挑战第28天】在快节奏的软件开发时代,高效与便捷成为了企业项目成功的关键要素之一。对于依赖对象存储服务(OSS, Object Storage Service)的应用而言,如何快速、安全地集成OSS功能,是许多开发者面临的挑战。今天,我们将深入探讨一款专为Spring Boot设计的企业级oss-spring-boot-starter,它以其开箱即用的特性,极大地简化了OSS的集成过程,让开发者能够更专注于业务逻辑的实现。
393 1
|
11月前
|
存储 JavaScript 前端开发
Vue中实现图片上传,上传后的图片回显,存储图片到服务器 【使用对象存储OSS】
这篇文章介绍了在Vue中实现图片上传到阿里云OSS对象存储服务的完整流程,包括服务端签名直传的前提知识、后端设置、前端组件封装以及图片上传和回显的效果展示。
|
存储 JavaScript 应用服务中间件
OSS对象存储后端实现+Vue实现图片上传【基于若依管理系统开发】
OSS对象存储后端实现+Vue实现图片上传【基于若依管理系统开发】
1821 0
|
前端开发 JavaScript Java
阿里云OSS临时凭证前后端配合上传文件
阿里云OSS临时凭证前后端配合上传文件
421 0
|
Java 对象存储
【工具类】使用阿里oss实现图片、视频、文档上传
【工具类】使用阿里oss实现图片、视频、文档上传
800 0