阿里云OSS——对象存储服务(工具)

  • 一、依赖
  • 二、yaml配置
  • 三、OSS工具类
  • 四、demo演示
    • 4.1 SpringBoot启动类
    • 4.2 Controller接口
    • 4.3 swagger测试
      • 4.3.1 上传测试
      • 4.3.2 批量删除测试

阿里云SDK(Java)文档

一、依赖

<!--阿里云文件管理服务-->
<dependency><groupId>com.aliyun.oss</groupId><artifactId>aliyun-sdk-oss</artifactId><version>3.10.2</version>
</dependency>

二、yaml配置

#阿里云OOS服务全局配置
aliyun:oss:#yourEndpoint填写Bucket所在地域对应的Endpoint。以华东1(杭州)为例,Endpoint填写为https://oss-cn-hangzhou.aliyuncs.com。end-point: your endpoint #也可以填写自己的域名(详情查看官网文档)#阿里云账号AccessKey拥有所有API的访问权限,风险很高。强烈建议您创建并使用RAM用户进行API访问或日常运维,请登录RAM控制台创建RAM用户。accessKey-id: your accessKeyIdsecret: your secret#存储空间是您用于存储对象(Object)的容器,所有的对象都必须隶属于某个存储空间。bucket-name: your bucketName

三、OSS工具类

注:目前只完成了单个文件上传、批量文件删除,其余功能待完善…

/*** @Description* @Author cb* @Date 2022-01-06 11:25**/
@Setter
@Getter
@Component
@ConfigurationProperties(prefix = "aliyun.oss")
public class OSSUtils {private String endPoint;private String accessKeyId;private String secret;private String bucketName;/*** 将本地文件上传到目标存储空间的目录中* @param file 要上传的文件* @return 返回文件的网络路径*/public String uploadFileStream(MultipartFile file) {//System.out.println(endPoint+"."+accessKeyId+"."+secret+"."+bucketName);InputStream inputStream = null;// 创建OSSClient实例。OSS ossClient = new OSSClientBuilder().build(endPoint, accessKeyId, secret);// 从上传的文件中得到流try {inputStream = file.getInputStream();String oldName = file.getOriginalFilename();int lastIndexOf = oldName.lastIndexOf(".");//后缀名前面的 . 的索引//获取新的文件名(原文件名+UUID+后缀名)String fileName= oldName.substring(0,lastIndexOf)+"-"+UUID.randomUUID().toString().replaceAll("-","")+oldName.substring(lastIndexOf);//要保存文件的目录结构,就是类似于20220102的三级目录String dir = LocalDate.now().format(DateTimeFormatter.ofPattern("yyyyMMdd"));fileName=dir+"/"+fileName;// 创建PutObjectRequest对象。// 依次填写Bucket名称(例如examplebucket)、Object完整路径(例如exampledir/exampleobject.txt)和本地文件的完整路径。Object完整路径中不能包含Bucket名称。// 如果未指定本地路径,则默认从示例程序所属项目对应本地路径中上传文件。PutObjectRequest putObjectRequest = new PutObjectRequest(bucketName, fileName, inputStream);// 如果需要上传时设置存储类型和访问权限,请参考以下示例代码。// ObjectMetadata metadata = new ObjectMetadata();// metadata.setHeader(OSSHeaders.OSS_STORAGE_CLASS, StorageClass.Standard.toString());// metadata.setObjectAcl(CannedAccessControlList.Private);// putObjectRequest.setMetadata(metadata);// 上传文件。ossClient.putObject(putObjectRequest);//  https://bucketName.endPoint/文件的路径(目录+文件名),%s是字符串的占位符String url=String.format("https://%s.%s/%s",bucketName,endPoint,fileName);System.out.println("上传的文件路径:"+url);return url;} catch (IOException e) {throw new RuntimeException("上传文件失败");}finally {if (null != ossClient){// 关闭OSSClient。ossClient.shutdown();}else if (null != inputStream){try {inputStream.close();} catch (IOException e) {e.printStackTrace();}}}}/*** 批量删除文件*  1.填写需要删除的多个文件完整路径。*  2.文件完整路径不能包含Bucket名称。格式:xxxDir/test.png 或 test.png** @param fileWithPathList* @return 删除的文件个数*/public Long deleteBatchObj(List<String> fileWithPathList){Long count = 0L;OSS ossClient = new OSSClientBuilder().build(endPoint,accessKeyId,secret);DeleteObjectsResult deleteObjectsResult = ossClient.deleteObjects(new DeleteObjectsRequest(bucketName).withKeys(fileWithPathList).withEncodingType("url"));List<String> deletedObjects = deleteObjectsResult.getDeletedObjects();for (String obj : deletedObjects) {try {String delObjStr = URLDecoder.decode(obj,"UTF-8");System.out.println(delObjStr);//输出删除的文件名count++;} catch (UnsupportedEncodingException e) {e.printStackTrace();}}if (null != ossClient){ossClient.shutdown();}return count;}}

四、demo演示

4.1 SpringBoot启动类

@SpringBootApplication
@ComponentScan(basePackages = {"com.ccbx.ymjr.base", "com.ccbx.ymjr.oss"})
public class OssServiceAp {public static void main(String[] args) {SpringApplication.run(OssServiceAp.class,args);}
}

4.2 Controller接口

/*** @Description* @Author cb* @Date 2022-01-06 11:59**/
@RestController
@RequestMapping("/api/oos")
@Api(tags = "操作阿里云OOS服务器的接口")
public class OSSController {@Autowiredprivate OSSUtils ossUtils;@PostMapping("/upload")@ApiOperation("上传文件到OSS服务器")public Result  upload(MultipartFile file){String url = ossUtils.uploadFileStream(file);return Result.ok().data("url",url);}@PostMapping("/deleteBatchFile")@ApiOperation("批量删除OSS服务器上的文件")public Result deleteBatchFileFromOSS(@RequestBody List<String> filePathList){try {Long deleteCount = ossUtils.deleteBatchObj(filePathList);return Result.ok().data("deleteCount",deleteCount);} catch (Exception e) {e.printStackTrace();return Result.error().message("批量删除文件时出错");}}}

4.3 swagger测试

4.3.1 上传测试



4.3.2 批量删除测试


此时在查看Bucket中的文件已经就被删除了。

阿里云OSS——对象存储服务(工具)相关推荐

  1. 配置阿里云OSS对象存储服务

    配置阿里云OSS对象存储服务 导入阿里云OSS依赖 <dependency><groupId>com.aliyun.oss</groupId><artifac ...

  2. 阿里云OSS(对象存储服务)简介

    最近公司想要使用阿里云OSS来存储精准客流图片,所以提前熟悉一下,做一个记录 注:阿里云官方文档已经很详细的阐述了OSS.以及开发流程,本文大多都是参考官方文档 OSS官方介绍地址:https://h ...

  3. 阿里云OSS | 对象存储服务快速入门 | 参考官方文档实现使用JavaSDK上传文件 | 本地上传与web上传案例

    参考文档 : 点击查看 文章目录 运行环境 一.OSS相关概念 1.1 Storage Class 存储类型 1.2 Bucket 存储空间 1.3 Object 对象 1.4 Region 地域 1 ...

  4. 阿里云OSS对象存储服务上传失败问题之一

    简介: OSS是阿里云提供一个对象存储服务,有着稳定高效的特点,但在操作时有些问题还是必须要注意一下的 今天在进行上传头像的操作时,发生了一个OSS连接时出现的问题,导致头像上传失败,问题的样式如下图 ...

  5. 开发工具篇第八讲:阿里云OSS对象存储服务

    本文是开发工具篇第八讲:阿里云对象存储服务(Object Storage Service,简称 OSS),具有与平台无关的RESTful API接口,您可以在任何应用.任何时间.任何地点存储和访问任意 ...

  6. 阿里云OSS对象存储服务购买与基础使用指南

    对象存储服务(Object Storage Service,简称OSS),是基于阿里云飞天分布式系统的海量.安全和高可靠的云存储服务.简单来说,OSS就是一个可以上传.下载.分享文件的服务,这一点从实 ...

  7. 阿里云OSS对象存储服务的使用

    使用阿里云对象OSS存储服务 由服务器进行上传 在阿里云官网进行开通OSS对象服务 创建你的Bucket 开启跨域功能 创建秘钥且添加权限以及服务器端配置 代码 由客户端进行上传(服务器Base64加 ...

  8. ossfs挂载百度对象存储_Linux利用OSSFS工具挂载阿里云OSS对象存储

    在前面的文章中,我们了解了腾讯云的COS对象存储的挂载,这次我们来了解阿里云OSS对象存储的挂载以及两者的优缺点. 同腾讯云的CVM和COS一样,阿里云的OSS不仅可以挂载在自己的ECS上,也可以挂载 ...

  9. java oss 批量传输_阿里云OSS对象存储,服务端签名后直传阿里云OSS

    继续上一章文章,这次要操作的是,浏览器请求服务要到签名后直传给OSS对象存储. 1.写好服务端的方法,传给前台相应的密钥 @Resource OSSClient ossClient; @Value(& ...

最新文章

  1. 图解CodeSmith使用和实用教程一 - 入门和生成MIS项目实体层代码
  2. LVS-DR+Keepalived 高可用群集
  3. DelayQueue详解
  4. 机器人编程语言学习哪门最好?5大热门编程语言推荐
  5. 前端学习(1579):React使用步骤
  6. 解密:90后程序员青睐哪些互联网公司?
  7. 代码级操作指南 | 如何在Docker Swarm中运行服务
  8. Failed to create AppDomain 'xxx'. Exception has been Failed to create AppDomain
  9. 设计师学python还是processing_人人都能学会的processing创意编程能实现什么?
  10. XAP部署错误代码大全
  11. gift to me by myself on 2012's new year
  12. Python自动化办公:xlwt万字教程
  13. python快递价格查询系统
  14. Diablo3英雄榜-使用Volley和Gson来处理暴雪API的Json数据
  15. java 模块层次结构图_Spring框架模块结构图解析
  16. 腾讯面试总结——iOS开发
  17. 关于通用人工智能的思考
  18. Qt for WinRT
  19. 数字货币&区块链动态
  20. gochat源码解析

热门文章

  1. 马的管辖-----深搜代码
  2. 硬件除法器原理_[ECCamp;RSA]除法器
  3. C语言 sscanf函数
  4. 绝对的好文,有点长,耐心点,说不定你的人生因此改变
  5. 蚌埠市商标代办机构服务流程以及时间介绍
  6. 13个有趣的Python高级脚本,建议收藏
  7. 《惢客创业日记》2018.10.21(周日) 作为主播给喜马拉雅FM的三个建议(下)
  8. Python下载网页图片
  9. 中国张紧轮皮带轮市场趋势报告、技术动态创新及市场预测
  10. row_number 语法