知识梳理:

今天要学的知识很实用,一个合格的项目里面肯定会用到这个技术,那就是文件上传,文件上传可以帮我们上传头像、excel表格。等,用过文件上传的小伙伴都是文件上传到哪里去呢?本人第一次上传文件是上传到项目的某个文件夹里面或者数据库里面进行储存,这样很不友好,最大的问题是一旦文件多了就很占内存,今天就来学习一下阿里云提供的对象存储oss,阿里云地址是:https://www.aliyun.com/


准备工作:

  1. 注册阿里云账号
  2. 开通对象存储OSS服务
  3. 获取AccessKey
  4. 创建Bucket 列表

第一步:创建Bucket 列表,创建的时候参数可以跟我选一样,看个人

第二步:获取AccessKey

第三步:引入依赖

  <dependency><groupId>com.aliyun.oss</groupId><artifactId>aliyun-sdk-oss</artifactId><version>3.10.2</version></dependency>

第四步:在项目配置文件中配置秘钥,第一个参数是你 地域节点 第二和第三参数是秘钥 第四参数是你创建的Bucket名称

#阿里云oss密钥
aliyun:oss:endpoint: oss-cn-beijing.aliyuncs.comaccessKeyId: secret: bucket:

第五步:初始化,读取配置参数

@Component
public class ConstantOssPropertiesUtils implements InitializingBean {@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;public static String EDNPOINT;public static String ACCESS_KEY_ID;public static String SECRECT;public static String BUCKET;@Overridepublic void afterPropertiesSet() throws Exception {EDNPOINT=endpoint;ACCESS_KEY_ID=accessKeyId;SECRECT=secret;BUCKET=bucket;}
}

第六步:编写具体的实现,这里的id是后来加的,因为当时只顾着上传的,以后加了用户头像上传,这个的id是表示那个用户,也可以不加id也能上传
ps:MultipartFile,接收用户上传的头像

 /*** 用户上传的头像* @param file id* @return*/@PostMapping("/uploadAvatar/{id}")public R uploadAvatar(MultipartFile file,@PathVariable Integer id){return userService.uploadAvatar(file,id);}

第七步:直接看业务层具体代码

 @Overridepublic R uploadAvatar(MultipartFile file,Integer id) {//设置相关参数String ednpoint = ConstantOssPropertiesUtils.EDNPOINT;String accessKeyId = ConstantOssPropertiesUtils.ACCESS_KEY_ID;String accessKeySecret= ConstantOssPropertiesUtils.SECRECT;String bucketName = ConstantOssPropertiesUtils.BUCKET;if(file.isEmpty()){return R.error("上传的文件不能为空");}//上传文件流try {// 创建OSSClient实例。OSS ossClient = new OSSClientBuilder().build(ednpoint, accessKeyId, accessKeySecret);InputStream inputStream = file.getInputStream();String fileName=file.getOriginalFilename();//生成随机唯一值,使用uuid,添加到文件名称里面String uuid= UUID.randomUUID().toString().replace("-","");fileName=uuid+fileName;//按照当前日期,创建文件夹,上传到创建文件夹里面//   /2021/02/02/ 01.jpgString timeUrl = new DateTime().toString("yyyy/MM/dd");fileName=timeUrl+"/"+fileName;//调用方法实现上传//1.JPGossClient.putObject(bucketName,fileName,inputStream);//关闭ossClientossClient.shutdown();//https://xxxxx.oss-cn-beijing.aliyuncs.com/01.png//上传后路径String url="https://"+bucketName+"."+ednpoint+"/"+fileName;User user=new User();user.setId(id);user.setUrl(url);this.updateById(user); //上传后修改数据原来的头像路径return R.ok(url);} catch (IOException e) {e.printStackTrace();return null;}}

上传之前:Bucket里面最开始是没有图片的,数据库可以没有路径,还没有上传,

选择图片:我就上传这个1.jpg这个图片

上传图片:我只用swagger-ui进行上传,已经上传成功了,数据库也存了图片的路径,用路径能直接下载图片

springboot整合阿里云对象存储oss相关推荐

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

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

  2. 阿里云对象存储OSS与文件存储NAS的区别

    一.简介 应用场景:选择一款存储产品,面向文档数据的存取,不会涉及到数据处理. 产品选型主要从OSS和NAS中选择一款,满足文档存储的需求. 二.NAS优缺点 NAS 是一种采用直接与网络介质相连的特 ...

  3. 谷粒学苑项目实战(九):实现阿里云对象存储OSS功能

    目录 一.开通阿里云对象存储OSS 二.创建bucket 三.创建操作阿里云OSS许可证 四.用代码实现头像上传功能 五.引入相关依赖 六.创建properties配置文件 七.创建主启动类 八.启动 ...

  4. 如何结合PICgo,Typora以及阿里云对象存储OSS搭建自己图床写博客

    如何利用阿里云对象存储OSS搭建自己图床写博客 1.购买阿里云 购买链接 登录阿里云–>控制台–>对象存储OSS–购买 购买的时候可以选择按月付费一月一元的,也可以年费9元的,40GB作为 ...

  5. 阿里云对象存储OSS支持版本管理特性

    2019独角兽企业重金招聘Python工程师标准>>> 阿里云对象存储OSS现已经全面支持"对象版本管理"特性.该功能适用于所有的存储类型以及区域.当Bucket ...

  6. 开启阿里云对象存储OSS防误删新功能,保护您珍贵的数据。

    一.背景 阿里云对象存储 OSS 是保存海量数据的平台,支持丰富的应用.在使用过程中难免会遇到误操作.程序 Bug.覆盖写等导致数据被删除的场景,对于数据的丢失会非常着急,后果也非常严重,甚至某些情况 ...

  7. 阿里云对象存储OSS存储照片

    版权声明 本文原创作者:谷哥的小弟 作者博客地址:http://blog.csdn.net/lfdfhl 概述 OSS可用于图片.音视频.日志等海量文件的存储.各种终端设备.Web网站程序.移动应用可 ...

  8. 关于阿里云对象存储OSS流量包说明

    阿里云对象存储OSS公网出方向流量是收费的,内网产生的流量或者公网入方向流量都是免费的,OSS流量计费方式分为按量付费和包年包月流量包两种计费模式,云吞铺子来详细说下阿里云对象存储OSS流量收费标准价 ...

  9. 阿里云对象存储OSS(Object Storage Service)

    文章目录 简介 endpoint:阿里云服务部署的地区位置 见解 开发步骤 配置文件 utils层(读取全局配置文件并赋值给类变量) service层 impl(基于oss驱动sdk实现类) cont ...

最新文章

  1. ASP.NET协作应用集成到trsids身份验证服务器的开发流程
  2. 对操作系统的五点感受--接口/进程/内存/磁盘管理/系统架构
  3. 高并发-【抢红包案例】之四:使用Redis+Lua脚本实现抢红包并异步持久化到数据库
  4. android最恶心的是什么?
  5. webgl 基础渲染demo_游戏引擎养成《二》 引入跨平台渲染库
  6. Java -----JVM运行时数据区
  7. Swift中的延迟加载(懒加载)
  8. windows API 第13篇 MoveFileEx
  9. 最新西安计算机信息会议,第23届全国信息存储技术学术会议在西安召开
  10. Web开发敏捷之道-应用Rails进行敏捷Web开发(第三版)pdf
  11. [Markdown] Markdown使用 - 持续更新
  12. MySQL-快速入门(7)索引
  13. tftp协议给服务器上传数据,TFTP连接过程详解
  14. 科技巨头极速进场 车路协同技术为何被热捧?
  15. 台式计算机安装无线网卡驱动程序,台式电脑无线网卡驱动程序怎么安装
  16. pytorch实现LeNet5手写数字识别+各层特征图可视化
  17. python语义分析_Python自然语言分析
  18. 电子印章有哪些特点和优势?
  19. 深度爬取网易Lofter的爬虫
  20. 浏览器地址栏无法直接使用Google搜索问题

热门文章

  1. 你想不到,韩国女团最喜欢的英文单词是这些
  2. Yapi环境搭建(史上最详细步骤)
  3. Oracle查看连接池
  4. IO接口以太网低频工业RFID读写器|读取器CK-LR12-E00之Modbus TCP的寄存器定义与说明
  5. Android 获取手机联系人代码
  6. 如何申请企业域名工作邮箱?注册企业域名邮箱多少钱?
  7. 职场中遇到甩锅侠和邀功精,我该怎么办?
  8. 深度学习目标检测——AP以及MAP
  9. 二次型哈密顿量的矩阵对角化方法
  10. CRC (Cyclic redundancy check) java 实现