栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

springboot整合阿里云oss上传文件(图片或视频)

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

springboot整合阿里云oss上传文件(图片或视频)

阿里云oss:是一个分布式的文件服务系统,可以进行图片(视频)的上传和下载

首先要有自己的阿里云账号,登录之后搜索对象存储oss

 

这个时候我们需要开通一下oss,开通之后进入oss控制台,然后需要创建Bucket(类似于文件夹,用于存储我们的图片等信息)

 这个时候bucket列表里面就会有我们刚才创建的bucket:

 那下面就使用springboot来整合oss,完成图片(视频)的上传和下载:

注意:调用oss也需要accessKey和secret

 我们先看下官方提供的接口文档:

可以看到安装的话就是引入相关依赖即可:

 初始化的相关代码也已经提供了:

 其他步骤就不一一看了,有兴趣的可以自己去阿里云官方查看文档,下面就开始整合:

新建一个springboot项目添加相关的依赖信息(由于我要使用swagger测试,因此也顺便加了一下swagger相关的依赖):


    com.aliyun.oss
    aliyun-sdk-oss
    3.10.2



    io.springfox
    springfox-swagger2
    2.9.2


    io.springfox
    springfox-swagger-ui
    2.9.2

然后配置文件里面配置如下所示:主要是阿里云oss相关配置信息和文件上传大小配置

## oss param config
aliyun.oss.endpoint=oss-cn-hangzhou.aliyuncs.com
aliyun.oss.accessKeyId=xxxxxxxxxx
aliyun.oss.secret=xxxxxxxxxxxx
aliyun.oss.bucket=hanansheng
# 最大上传单个文件大小:默认1M
spring.servlet.multipart.max-file-size=1024MB
# 最大置总上传的数据大小 :默认10M
spring.servlet.multipart.max-request-size=1024MB

然后开始写controller代码:

 然后是service接口的定义:

最后是serviceImpl上传oss的代码:可以看到阿里云oss上传文件类型很多,这里我选择的是简单上传中的流式上传:

package com.example.ossboot.service.impl;

import com.aliyun.oss.OSS;
import com.aliyun.oss.OSSClientBuilder;
import com.aliyun.oss.model.Objectmetadata;
import com.example.ossboot.service.FileService;
import org.joda.time.DateTime;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;
import org.springframework.web.multipart.MultipartFile;

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

@Service
public class FileServiceImpl implements FileService {

    @Value("${aliyun.oss.endpoint}")
    private String endpoint;

    @Value("${aliyun.oss.accessKeyId}")
    private String accessKeyId;

    @Value("${aliyun.oss.secret}")
    private String secret;

    @Value("${aliyun.oss.bucket}")
    private String bucket;

    @Override
    public String upload(MultipartFile file) {
        // Endpoint以华东1(杭州)为例,其它Region请按实际情况填写
        String endpoint = this.endpoint;
        // 阿里云账号AccessKey
        String accessKeyId = this.accessKeyId;
        String accessKeySecret = this.secret;
        // 填写Bucket名称
        String bucketName = this.bucket;

        try{
            // 创建OSSClient实例。
            OSS ossClient = new OSSClientBuilder().build(endpoint, accessKeyId, accessKeySecret);
            // 上传文件流
            InputStream inputStream= file.getInputStream();
            String fileName=file.getOriginalFilename();
            String uuid = UUID.randomUUID().toString().replaceAll("-","");
            fileName = uuid+fileName;

            //按照当前日期,创建文件夹,上传到创建文件夹里面
            //  2022/03/15/xx.jpg
            String timeUrl = new DateTime().toString("yyyy/MM/dd");
            fileName = timeUrl+"/"+fileName;
            // 调用方法实现上传
            ossClient.putObject(bucketName,fileName,inputStream);

            // 关闭ossclient
            ossClient.shutdown();

            // 上传之后文件路径
            String url="https://"+bucketName+"."+endpoint+"/"+fileName;
            return url;
        }catch (IOException e){
            e.printStackTrace();
            return null;
        }

    }
}

是不是感觉很简单。下面我通过swagger测试一下:

(1)上传图片测试:

 可以看到上传成功,并且返回上传后的图片路径:

https://hanansheng.oss-cn-hangzhou.aliyuncs.com/hy.jpg.crdownload

浏览器访问可以看到是可以访问得到的:

 并且oss里面也有了上传的图片信息:

 (2)上传视频测试:

 返回上传后视频地址:

https://hanansheng.oss-cn-hangzhou.aliyuncs.com/2022/03/15/20053aa41a494b5eb2b68dabb713188714.mp4

 浏览器访问:

 

 并且阿里云oss里面也是有的相关信息:

由于代码逻辑里面我以当前日期为文件夹来存储,所以如下:

 

 

  

自此,简单上传中的流式上传算是完成了,相关的demo已经上传csdn,有需要的可以下载:

springboot整合阿里云oss进行文件上传-Java文档类资源-CSDN下载

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/769059.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号