阿里云OSS——对象存储服务(工具)
阿里云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——对象存储服务(工具)相关推荐
- 配置阿里云OSS对象存储服务
配置阿里云OSS对象存储服务 导入阿里云OSS依赖 <dependency><groupId>com.aliyun.oss</groupId><artifac ...
- 阿里云OSS(对象存储服务)简介
最近公司想要使用阿里云OSS来存储精准客流图片,所以提前熟悉一下,做一个记录 注:阿里云官方文档已经很详细的阐述了OSS.以及开发流程,本文大多都是参考官方文档 OSS官方介绍地址:https://h ...
- 阿里云OSS | 对象存储服务快速入门 | 参考官方文档实现使用JavaSDK上传文件 | 本地上传与web上传案例
参考文档 : 点击查看 文章目录 运行环境 一.OSS相关概念 1.1 Storage Class 存储类型 1.2 Bucket 存储空间 1.3 Object 对象 1.4 Region 地域 1 ...
- 阿里云OSS对象存储服务上传失败问题之一
简介: OSS是阿里云提供一个对象存储服务,有着稳定高效的特点,但在操作时有些问题还是必须要注意一下的 今天在进行上传头像的操作时,发生了一个OSS连接时出现的问题,导致头像上传失败,问题的样式如下图 ...
- 开发工具篇第八讲:阿里云OSS对象存储服务
本文是开发工具篇第八讲:阿里云对象存储服务(Object Storage Service,简称 OSS),具有与平台无关的RESTful API接口,您可以在任何应用.任何时间.任何地点存储和访问任意 ...
- 阿里云OSS对象存储服务购买与基础使用指南
对象存储服务(Object Storage Service,简称OSS),是基于阿里云飞天分布式系统的海量.安全和高可靠的云存储服务.简单来说,OSS就是一个可以上传.下载.分享文件的服务,这一点从实 ...
- 阿里云OSS对象存储服务的使用
使用阿里云对象OSS存储服务 由服务器进行上传 在阿里云官网进行开通OSS对象服务 创建你的Bucket 开启跨域功能 创建秘钥且添加权限以及服务器端配置 代码 由客户端进行上传(服务器Base64加 ...
- ossfs挂载百度对象存储_Linux利用OSSFS工具挂载阿里云OSS对象存储
在前面的文章中,我们了解了腾讯云的COS对象存储的挂载,这次我们来了解阿里云OSS对象存储的挂载以及两者的优缺点. 同腾讯云的CVM和COS一样,阿里云的OSS不仅可以挂载在自己的ECS上,也可以挂载 ...
- java oss 批量传输_阿里云OSS对象存储,服务端签名后直传阿里云OSS
继续上一章文章,这次要操作的是,浏览器请求服务要到签名后直传给OSS对象存储. 1.写好服务端的方法,传给前台相应的密钥 @Resource OSSClient ossClient; @Value(& ...
最新文章
- 图解CodeSmith使用和实用教程一 - 入门和生成MIS项目实体层代码
- LVS-DR+Keepalived 高可用群集
- DelayQueue详解
- 机器人编程语言学习哪门最好?5大热门编程语言推荐
- 前端学习(1579):React使用步骤
- 解密:90后程序员青睐哪些互联网公司?
- 代码级操作指南 | 如何在Docker Swarm中运行服务
- Failed to create AppDomain 'xxx'. Exception has been Failed to create AppDomain
- 设计师学python还是processing_人人都能学会的processing创意编程能实现什么?
- XAP部署错误代码大全
- gift to me by myself on 2012's new year
- Python自动化办公:xlwt万字教程
- python快递价格查询系统
- Diablo3英雄榜-使用Volley和Gson来处理暴雪API的Json数据
- java 模块层次结构图_Spring框架模块结构图解析
- 腾讯面试总结——iOS开发
- 关于通用人工智能的思考
- Qt for WinRT
- 数字货币&区块链动态
- gochat源码解析