springboot上传文件到阿里云oss

本文详细介绍了如何使用SpringBoot框架将文件上传至阿里云OSS,包括创建Bucket、AccessKey,以及代码实现过程。从环境搭建到具体实现,为开发者提供了全面的指导。

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

前言

文件上传是一个项目中非常常见的功能。其有很多的实现的方式,如上传到服务器,上传到项目路径下,上传到云服务器如阿里云,腾讯云等。但是如果上传到本地会因为项目文件的移动而导致文件丢失,也会收到本地内存大小的限制。所以很多企业会采用将文件上传到云服务器的方式保存文件。下面就为大家介绍将文件上传到阿里云oss的代码实现。

实现步骤

1. 登录进入阿里云官网

网址:https://www.aliyun.com/

2.进入对象存储oss页面

在这里插入图片描述
还没有开通点击“立即开通”,已开通点击“管理控制台”
在这里插入图片描述

3.创建Bucket

按下图选择即可
在这里插入图片描述在这里插入图片描述

4.查看bucket列表

创建成功后即可看到自己的bucket列表

在这里插入图片描述

5.创建AccessKey

点击头像进入AccessKey管理,点击“创建AccessKey”按钮即可
在这里插入图片描述

6.编写代码

以上均是准备工作,下面我们使用spring boot框架将文件上传到阿里云oss。

1.引入依赖
<dependency>
    <groupId>com.aliyun.oss</groupId>
    <artifactId>aliyun-sdk-oss</artifactId>
    <version>3.10.2</version>
</dependency>
2.controller代码
//上传头像的方法
    @PostMapping("/uploadOssFile")
    public R uploadOssFile(MultipartFile file){
        //获取上传文件MultipartFile
        //返回上传到oss的路径
        String url = ossService.uploadFileAvatar(file);

        return R.ok().data("url",url);
    }

3.service代码
public String uploadFileAvatar(MultipartFile file) {
		// Endpoint以杭州为例,其它Region请按实际情况填写。
        String endpoint = "http://oss-cn-hangzhou.aliyuncs.com";
        String accessKeyId = "<yourAccessKeyId>";
        String accessKeySecret = "<yourAccessKeySecret>";
        String bucketName = "<yourBucketName>";

        OSS ossClient = new OSSClientBuilder().build(endpoint, accessKeyId, accessKeySecret);
        InputStream inputStream = null;
        try {
            //获取文件流
            inputStream = file.getInputStream();
        } catch (IOException e) {
            e.printStackTrace();
        }
        //获取文件名称
        String filename = file.getOriginalFilename();
        //1.在文件名称中添加随机唯一的值
        String uuid = UUID.randomUUID().toString().replaceAll("-","");
        filename = uuid+filename;

        //2.把文件按日期分类
        String datePath = new DateTime().toString("yyyy/MM/dd");
        filename = datePath +"/"+filename;

        //调用OSS方法实现上传
        ossClient.putObject(bucketName, filename, inputStream);
        ossClient.shutdown();
        //把上传之后的文件路径返回
        //需要把上传到阿里云oss路径手动拼接出来
        //路径规则:https://edu-cgq.oss-cn-chengdu.aliyuncs.com/QQ%E5%9B%BE%E7%89%8720200502111905.jpg
        String url = "https://"+bucketName+"."+endpoint+"/"+filename;
        return url;
    }
7.测试
1.使用postman访问接口地址

在这里插入图片描述

2.进入bucket查看文件是否上传成功

在这里插入图片描述
至此,文件上传成功。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值