前言

在项目开发中,很多涉及到需要存储文件的业务点,由于不想自建文件服务器,因此考虑使用阿里云的oss对象存储;

OSS对象存储简介

对象存储服务(Object Storage Service,简称OSS)

阿里云对象存储OSS(Object Storage Service)是一款海量、安全、低成本、高可靠的云存储服务,提供99.9999999999%(12个9)的数据持久性,99.995%的数据可用性。多种存储类型供选择,全面优化存储成本。非常适合存储非结构化数据,例如视频、图形、日志、文本文件以及各种App应用、多终端同步软件、网盘下载站的文件等,单个文件的大小从1字节到48.8TB,可以存储的个数无限制;

前置操作

1、注册阿里云账户并登录至控制台

可以直接使用自己的支付宝账户登录,或者使用手机号注册;

2、登录控制台,开通对象存储OSS服务

3、创建bucket

使用OSS存储的基本逻辑单元是bucket,bucket即为桶的意思,创建一个桶,即创建了一个可以上传文件的容器,然后客户端就可以将文件上传到这个桶中;

点击工作台,创建bucket,如下我这里创建了一个名叫 "zcy1"的桶

然后可以基于这个bucket创建文件目录,并可以测试在线上传文件

点击右上角个人头像设置那里进入到 AccessKey管理

这个里面维护着个人创建的AccessKey信息,客户端程序中,需要使用这个AccessKey信息进行连接,并上传文件到OSS的bucket;

代码集成步骤

1、导入官方提供的SDK

        <dependency><groupId>com.aliyun.oss</groupId><artifactId>aliyun-sdk-oss</artifactId><version>2.8.3</version></dependency><dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>4.12</version></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><dependency><groupId>commons-lang</groupId><artifactId>commons-lang</artifactId><version>2.6</version></dependency><!-- lombok --><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><version>1.18.0</version></dependency>

2、配置文件中配置控制台的AccessKey


#服务端口
server.port=8002
#服务名
spring.application.name=service-oss#阿里云 OSS
#不同的服务器,地址不同
aliyun.oss.file.endpoint=管控台的endpoint地址
aliyun.oss.file.keyid=accessKeyId
aliyun.oss.file.keysecret=secretKey
#bucket可以在控制台创建,也可以使用java代码创建
aliyun.oss.file.bucketname=你创建的bucket名称

3、添加一个配置类,读取配置文件信息

import org.springframework.beans.factory.InitializingBean;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;@Component
@ConfigurationProperties(prefix = "oss.aliyun")
public class ConstantPropertiesUtils implements InitializingBean {//读取配置文件的内容@Value("${aliyun.oss.file.endpoint}")private String endpoint;@Value("${aliyun.oss.file.keyid}")private String keyId;@Value("${aliyun.oss.file.keysecret}")private String keySecret;@Value("${aliyun.oss.file.bucketname}")private String bucketName;//定义公共静态常量public static String END_POINT;public static String ACCESS_KEY_ID;public static String ACCESS_KEY_SECRET;public static String BUCKET_NAME;@Overridepublic void afterPropertiesSet() throws Exception {END_POINT = endpoint;ACCESS_KEY_ID = keyId;ACCESS_KEY_SECRET = keySecret;BUCKET_NAME = bucketName;}
}

4、编写一个测试接口,用于文件上传

import com.congge.service.OssService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.multipart.MultipartFile;@RestController
public class OssController {@Autowiredprivate OssService ossService;//上传头像,返回图片的url给@PostMappingpublic String uploadOssFile(MultipartFile file) throws Exception{//获取上传文件 MultipartFile//返回图片在oss上的路径String url = ossService.uploadFileAvatar(file);return url;}}

5、业务实现类

import com.aliyun.oss.OSS;
import com.aliyun.oss.OSSClient;
import com.congge.configs.ConstantPropertiesUtils;
import com.congge.service.OssService;
import org.springframework.stereotype.Service;
import org.springframework.web.multipart.MultipartFile;import java.io.InputStream;
import java.util.UUID;@Service
public class OssServiceImpl implements OssService {@Overridepublic String uploadFileAvatar(MultipartFile file)  throws Exception{String endpoint = ConstantPropertiesUtils.END_POINT;String accessKeyId = ConstantPropertiesUtils.ACCESS_KEY_ID;String accessKeySecret = ConstantPropertiesUtils.ACCESS_KEY_SECRET;String bucketName = ConstantPropertiesUtils.BUCKET_NAME;String url = null;//创建OSSClient实例。OSS ossClient = new OSSClient(endpoint, accessKeyId, accessKeySecret);//获取上传文件输入流InputStream inputStream = file.getInputStream();//获取文件名称String fileName = file.getOriginalFilename();//保证文件名唯一,去掉uuid中的'-'String uuid = UUID.randomUUID().toString().replaceAll("-", "");fileName = uuid + fileName;//把文件按日期分类,构建日期路径:avatar/2019/02/26/文件名//String datePath = new Date().toString("yyyy/MM/dd");String datePath = "2021";//拼接fileName = datePath + "/" + fileName;//调用oss方法上传到阿里云//第一个参数:Bucket名称//第二个参数:上传到oss文件路径和文件名称//第三个参数:上传文件输入流ossClient.putObject(bucketName, fileName, inputStream);//把上传后把文件url返回//https://xppll.oss-cn-beijing.aliyuncs.com/01.jpgurl = "https://" + bucketName + "." + endpoint + "/" + fileName;//关闭OSSClientossClient.shutdown();return url;}
}

6、主启动类

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

运行上面的程序,调用上传接口,使用swagger调用即可,

上传成功后,接口会返回一串上传成功的url,

这时候我们再返回到控制台中查看下我们上传的这种图片

通过上面的步骤,我们就基于springboot与oss的整合 ,完成了上传文件到OSS的需求

springboot 整合阿里云oss相关推荐

  1. SpringBoot整合阿里云OSS文件上传、下载、查看、删除

    SpringBoot整合阿里云OSS文件上传.下载.查看.删除 该项目源码地址:https://github.com/ggb2312/springboot-integration-examples ( ...

  2. SpringBoot整合阿里云OSS

    文章目录 SpringBoot整合阿里云OSS 1.准备工作 1.1 开通"对象存储OSS"服务 1.2 创建Bucket 1.3 创建RAM子用户 2.SpringBoot整合阿 ...

  3. springboot整合阿里云oss上传的方法示例

    这篇文章主要介绍了springboot整合阿里云oss上传的方法示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧 OSS申请和 ...

  4. SpringBoot整合阿里云OSS上传文件

    一.需求分析 文件上传是一个非常常见的功能,就是通过IO流将文件写到另外一个地方,这个地方可以是项目下的某个文件夹里,或者是本地电脑某个盘下面,还可以是云服务OSS里面,这里就是我要讲到的OSS,我写 ...

  5. springBoot 整合阿里云OSS对象存储封装实现类

    OSS对象存储 阿里云提供针对各种存储资源(块.文件和对象)的低成本.高可靠.高可用的存储服务,涵盖数据备份.归档.容灾等场景.本文介绍阿里云各类存储服务及特性的适用场景.性能.安全.接口和费用模型等 ...

  6. SpringBoot整合阿里云OSS,传入文件为MultipartFile格式文件

    我对普通的人类没有兴趣,你们只要是有外星人.未来人.异世界人.超能力者, 就尽管来找我吧!以上!----<凉宫春日的忧郁> 1. 去阿里云开通个人对象存储OSS服务 点击创建Bucket, ...

  7. SpringBoot 系列教程(九十九):SpringBoot整合阿里云OSS实现文件上传,下载,删除功能

    一.前言 之所以写这篇文章呢? 是因为最近在做文件上传时遇到一个问题,就是我们在以前使用传统Spring+SpringMVC+Mybatis框架开发Web项目的时候,都是将项目打包生成一个War包,然 ...

  8. SpringBoot整合阿里云OSS,支持文件上传、下载、删除、加签等操作

    首先附上OSS基本介绍和官方文档链接:https://help.aliyun.com/product/31815.html?spm=ata.21736010.0.0.25d67536bR4cly 另外 ...

  9. SpringBoot整合——阿里云对象存储(OSS)

    SpringBoot整合--阿里云对象存储 1 OSS介绍 在开发应用的过程中,我们经常会有用户需要实名认证之后才能访问的需求. 用户认证需要上传证件图片.首页轮播也需要上传图片,因此我们要做文件服务 ...

  10. SpringBoot整合阿里云视频点播

    文章目录 SpringBoot整合阿里云视频点播 1.准备工作 2.服务端SDK的使用 2.1 导入依赖 2.2 初始化类 2.3 创建读取公共常量的工具类 2.4 获取视频播放地址 2.5 获取视频 ...

最新文章

  1. eclipse如何卸载adt插件
  2. 为什要使用预编译SQL?(转)
  3. WebGL学习笔记七点一
  4. android:versionCode和android:versionName 用途
  5. C++之纯虚函数和抽象类
  6. 关于java构造方法的描述_在JAVA语言中,下面关于构造函数描述正确的是()
  7. Linux下mysql数据库的自动备份与还原 远程备份和本地备份
  8. win10+ubuntu双系统引导修复
  9. 新益华基层医疗系统使用方法_MongoDB for VS Code:使用Mongo的新方法
  10. 20220606 关于矩阵的Young不等式
  11. 记录服务磁盘满了清理记录
  12. lesson 12 goodbye and good luck 再见,一路顺风-将来时态-early in the morning
  13. EPC 的RFID 标准体系
  14. 深度学习数据增强方法总结
  15. 传说中的补丁比较...很好玩啊..
  16. winform抓取淘宝宝贝详细页的上下架时间等信息
  17. 创意APP如何盈利?怎么赚钱的?
  18. Linux改变图片大小的命令,如何在Ubuntu命令行上调整图像大小
  19. python读取Excel指定范围并转为数组
  20. 数据结构——迪杰斯特拉(Dijkstra)算法

热门文章

  1. 记录一下C#使用SmtpClient发送网易163、126邮件使用sll协议失败的坑
  2. Android手机写Java代码的软件
  3. Java多线程基础(十三)——Thread-Specific Storage(ThreadLocal)模式
  4. Mindjet MindManager2022思维导图解压安装程序教程
  5. TML5期末大作业:咖啡网站设计——咖啡网站pc端带轮播js (5页) 学生酒水网页作业, 生鲜水果网页作业成品, 零食小吃网页作 美食网页业模板
  6. 一个老程序员的忠告:千万不要一辈子靠技术生存
  7. 微信公众号上传素材并回复关键词推送该素材:thinphp开发微信公众号如何上传临时素材库
  8. 《2022年 Android 中高级面试题汇总》及答案整理(备战金九银十)
  9. 概率论与数理统计——几何分布的无记忆性证明
  10. 程序员女朋友都是在哪找的