【案例实战】SpringBoot整合阿里云文件上传OSS

这篇具有很好参考价值的文章主要介绍了【案例实战】SpringBoot整合阿里云文件上传OSS。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1.需求背景
  • C端业务用户头像上传
  • 海量图片音频、视频存储
  • 用户行为日志存储

(1)阿里云OSS介绍

  • 对象存储OSS(Object Storage Service)是阿里云提供的海量、安全、低成本、高持久的云存储服务。其数据设计持久性不低于99.9999999999%(12个9),服务设计可用性不低于99.995%。

  • OSS具有与平台无关的RESTful API接口,您可以在任何应用、任何时间、任何地点存储和访问任意类型的数据。

  • 提供标准、低频访问、归档和冷归档四种存储类型,全面覆盖从热到冷的各种数据存储场景:

标准存储类型 高持久、高可用、高性能的对象存储服务,支持频繁的数据访问。是各种社交、分享类的图片、音视频应用、大型网站、大数据分析的合适选择。
低频访问存储类型 适合长期保存不经常访问的数据(平均每月访问频率1到2次)。存储单价低于标准类型,适合各类移动应用、智能设备、企业数据的长期备份,支持实时数据访问。
归档存储类型 适合需要长期保存(建议半年以上)的归档数据,在存储周期内极少被访问,数据进入到可读取状态需要1分钟的解冻时间。适合需要长期保存的档案数据、医疗影像、科学资料、影视素材。
冷归档存储类型 适合需要超长时间存放的极冷数据。例如因合规要求需要长期留存的数据、大数据及人工智能领域长期积累的原始数据、影视行业长期留存的媒体资源、在线教育行业的归档视频等。
2.开通阿里云OSS

【案例实战】SpringBoot整合阿里云文件上传OSS
【案例实战】SpringBoot整合阿里云文件上传OSS
【案例实战】SpringBoot整合阿里云文件上传OSS
【案例实战】SpringBoot整合阿里云文件上传OSS
【案例实战】SpringBoot整合阿里云文件上传OSS
【案例实战】SpringBoot整合阿里云文件上传OSS
【案例实战】SpringBoot整合阿里云文件上传OSS

注意:这块secret一定要自己保存起来,后续无法查到这个值。

【案例实战】SpringBoot整合阿里云文件上传OSS

3.创建SpringBoot项目

(1)创建maven项目,添加maven依赖

	<parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.6.7</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>

	<dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <version>1.18.20</version>
            <scope>compile</scope>
        </dependency>
    </dependencies>

(2)创建主类

@SpringBootApplication
public class OssApplication {
    public static void main(String[] args) {
        SpringApplication.run(OssApplication.class, args);
    }
}

(3)创建yml配置文件

server:
  port: 8019
spring:
  application:
    name: oss-server

(4)启动验证

【案例实战】SpringBoot整合阿里云文件上传OSS

4.SpringBoot整合OSS

(1)添加oss-maven依赖

        <!-- OSS依赖-->
        <dependency>
            <groupId>com.aliyun.oss</groupId>
            <artifactId>aliyun-sdk-oss</artifactId>
            <version>3.10.2</version>
        </dependency>

(2)yml配置OSS信息

# 阿里云OSS配置
aliyun:
  oss:
    end-point: oss-cn-hangzhou.aliyuncs.com
    access-key-id: LTAI5t9we1rWEkQijbzT75iU
    access-key-secret: OXK24t76IPxoDdAUaPXiWY8N0BkVfy
    bucket-name: oss-test-img

(3)读取yml配置,创建OSSConfig

/**
 * @description OSS配置类
 * @author lixiang
 */
@ConfigurationProperties(prefix = "aliyun.oss")
@Configuration
@Data
public class OSSConfig {

    private String endPoint;
    private String accessKeyId;
    private String accessKeySecret;
    private String bucketName;

}

(4)编写FileService

public interface FileService {

    /**
     * 阿里云OSS文件上传
     * @param file
     * @return
     */
    String upload(MultipartFile file);

}

(5)编写实现类FileServiceImpl

/**
 * 文件上传业务类
 *
 * @author lixiang
 */
@Service
@Slf4j
public class FileServiceImpl implements FileService {

    @Autowired
    private OSSConfig ossConfig;

    /**
     * 阿里云OSS文件上传
     *
     * @param file
     */
    @Override
    public String upload(MultipartFile file) {

        //获取相关配置
        String bucketName = ossConfig.getBucketName();
        String endPoint = ossConfig.getEndPoint();
        String accessKeyId = ossConfig.getAccessKeyId();
        String accessKeySecret = ossConfig.getAccessKeySecret();

        //创建OSS对象
        OSS ossClient = new OSSClientBuilder().build(endPoint, accessKeyId, accessKeySecret);

        //获取原生文件名
        String originalFilename = file.getOriginalFilename();
        //JDK8的日期格式
        LocalDateTime time = LocalDateTime.now();
        DateTimeFormatter dft = DateTimeFormatter.ofPattern("yyyy/MM/dd");

        //拼装OSS上存储的路径
        String folder = dft.format(time);
        String fileName = generateUUID();
        String extension = originalFilename.substring(originalFilename.lastIndexOf("."));

        //在OSS上bucket下的文件名
        String uploadFileName = "user/" + folder + "/" + fileName + extension;

        try {
            PutObjectResult result = ossClient.putObject(bucketName, uploadFileName, file.getInputStream());
            //拼装返回路径
            if (result != null) {
                return "https://"+bucketName+"."+endPoint+"/"+uploadFileName;
            }
        } catch (IOException e) {
            log.error("文件上传失败:{}",e.getMessage());
        } finally {
            //OSS关闭服务,不然会造成OOM
            ossClient.shutdown();
        }
        return null;
    }

    /**
     * 获取随机字符串
     * @return
     */
    private String generateUUID() {
        return UUID.randomUUID().toString().replaceAll("-", "").substring(0, 32);
    }
}

(6)编写控制层

@Slf4j
@RestController
@RequestMapping("/file")
public class FileController {

    @Autowired
    private FileService fileService;

    /**
     * 文件上传接口
     * @param file
     * @return
     */
    @PostMapping("/upload")
    public Map<String, Object> upload(@RequestPart("file") MultipartFile file){
        String imgFileStr = fileService.upload(file);
        return buildResult(imgFileStr);
    }

    /**
     * 测试返回拼装,根据公司自己封装的统一返回去写
     * @param str
     * @return
     */
    private Map<String,Object> buildResult(String str){
        Map<String, Object> result = new HashMap<>();
        //判断字符串用lang3下的StringUtils去判断,这块我就不引入新的依赖了
        if(str== null || "".equals(str)){
            result.put("code",10000);
            result.put("msg","图片上传失败");
            result.put("data",null);
        }else{
            result.put("code",200);
            result.put("msg","图片上传成功");
            result.put("data",str);
        }
        return result;
    }

}

(7)测试文件上传

【案例实战】SpringBoot整合阿里云文件上传OSS

【案例实战】SpringBoot整合阿里云文件上传OSS文章来源地址https://www.toymoban.com/news/detail-455505.html

到了这里,关于【案例实战】SpringBoot整合阿里云文件上传OSS的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • SpringBoot整合阿里云OSS文件存储解决方案

    🧑‍💻作者名称:DaenCode 🎤作者简介:啥技术都喜欢捣鼓捣鼓,喜欢分享技术、经验、生活。 😎人生感悟:尝尽人生百味,方知世间冷暖。 📖所属专栏:SpringBoot实战 以下是专栏部分内容,更多内容请前往专栏查看! 标题 一文带你学会使用SpringBoot+Avue实现短信通知功能

    2024年02月08日
    浏览(29)
  • SpringBoot对接阿里云OSS上传文件以及回调(有坑)

    今天在对接阿里云OSS对象存储, 把这过程记录下来 阿里云的内容很多,文档是真的难找又难懂 本文主要是用的PostObject API 加上 Callback参数 PostObject - https://help.aliyun.com/document_detail/31988.html?spm=a2c4g.31989.0.0 Callback - https://help.aliyun.com/document_detail/31989.html?spm=a2c4g.31988.0.0 前端向后

    2024年02月11日
    浏览(44)
  • SpringBoot集成阿里云OSS、华为云OBS、七牛云、又拍云等上传案例【附白嫖方案】【附源码】

    唉!本文写起来都是泪点。不是刻意写的本文,主要是对日常用到的文件上传做了一个汇总总结,同时希望可以给用到的小伙伴带来一点帮助吧。 上传本地,这个就不水了,基本做技术的都用到过吧; 阿里云OSS,阿里云是业界巨鳄了吧,用到的人肯定不少吧,不过博主好久

    2024年02月22日
    浏览(39)
  • SpringBoot整合阿里云OSS对象存储

    阿里云对象存储服务(Object Storage Service,简称OSS)为您提供基于网络的数据存取服务。使用OSS,您可以通过网络随时存储和调用包括文本、图片、音频和视频等在内的各种非结构化数据文件。 阿里云OSS将数据文件以对象(object)的形式上传到存储空间(bucket)中。 可以进行

    2024年02月06日
    浏览(39)
  • SpringBoot——原理(自动配置_案例(自定义阿里云文件上传starter))

    本文同步更新于鼠鼠之家 starter就是springboot中的起步依赖,虽然springboot已经提供了很多的起步依赖,但是在实际项目开发中可能会用到和第三方的技术,不是所有第三方在springboot中都有收录。 比如之前文章中有用到过的阿里云OSS,阿里云并没有提供起步依赖,导致每次使用

    2024年02月07日
    浏览(28)
  • 阿里云OSS文件上传

    需求分析:实现文件上传与下载 ,与SprinCloud Alibaba整合 步骤一:注册帐号 阿里云登录 - 欢迎登录阿里云,安全稳定的云计算服务平台  第二步:创建Bucket  第三步,创建Accesskey  注意:创建时候一定记得复制帐号密码,密码只在创建成功后显示一次! 第四步:安装对象存储

    2024年01月24日
    浏览(45)
  • 使用SpringBoot将图片上传至阿里云OSS

    1. 什么是OSS? 官方的解释是这样的:阿里云对象存储OSS(Object Storage Service)是一款海量、安全、低成本、高可靠的云存储服务,提供99.9999999999%(12个9)的数据持久性,99.995%的数据可用性。 官网:对象存储OSS 2. 为什么要使用OSS? 作者认为主要是方便项目上线后的文件业务的处

    2024年02月06日
    浏览(29)
  • 文件上传对接阿里云OSS

    1.首先注册登陆阿里云,在产品里找到oss服务  2.点击开通oss服务后,可以看到oss服务面板  3.创建一个Bucket文件存储桶 Bucket 相当于 dir =bbs/avatar 用作文件隔离 4.java对接oss服务 找到java SDK 5.导入SDK的依赖  如果使用的是Java 9及以上的版本,则需要添加jaxb相关依赖。添加jaxb相关

    2024年02月05日
    浏览(40)
  • 阿里云对象存储OSS文件上传

    阿里云oss地址: 对象存储OSS_云存储服务_企业数据管理_存储-阿里云 阿里云对象存储OSS是一款海量、安全、低成本、高可靠的云存储服务,提供12个9的数据持久性,99.995%的数据可用性和多种存储类型,适用于数据湖存储,数据迁移,企业数据管理,数据处理等多种场景,可对

    2024年02月12日
    浏览(32)
  • Golang操作阿里云OSS上传文件

    为什么要使用OSS?应用场景是什么? 最近在开发考试系统,里面需要上传课件,课件包括pdf,map等等各种类型的文件,这些文件不能像图片一样,直接上传到项目目录下面,需要单独存放,阿里云就提供了存储方式,然后OSS是其中的一种,可以用来存储一些文件。 我们需要

    2024年02月02日
    浏览(35)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包