当前位置: 首页 > news >正文

阿里云对象存储OSS批量上传,单个上传,批量删除,单个删除!

请自行替换秘钥:

#阿里云 OSS src/main/resources/application.properties
#不同的服务器,地址不同
aliyun.oss.file.endpoint=https://oss-cn-hangzhou.aliyuncs.com
aliyun.oss.file.accessKeyId=LTAI5t9wUqCoD42qPGRy8S
aliyun.oss.file.accessKeySecret=WV9W6erbdF2oqH4KIlo5BzNrwaP
#bucket可以在控制台创建,也可以使用java代码创建
aliyun.oss.file.bucketName=zhurenjin-workspace

多个文件批量上传,单个上传,工具类:

public Map<String, Object> Upload(MultipartFile file) throws IOException {InputStream inputStream = file.getInputStream();// 避免文件覆盖String originalFilename = file.getOriginalFilename();int iPoint = originalFilename.lastIndexOf(".");String fileTypePre = originalFilename.substring(0,iPoint);String fileType = originalFilename.substring(iPoint);String fileName = UUID.randomUUID().toString()+fileTypePre+fileType;OSS ossClient = new OSSClientBuilder().build(endpoint, accessKeyId,accessKeySecret);// PutObjectRequest putObjectRequest = new PutObjectRequest(bucketName, fileName, inputStream);// 创建PutObject请求。ossClient.putObject(bucketName,fileName,inputStream);// https://zhurenjin-workspace.oss-cn-hangzhou.aliyuncs.com/exampledir/exampleobject.jpgString imgUrl = endpoint.split("//")[0] + "//" + bucketName + "." + endpoint.split("//")[1] + "/"+fileName;ossClient.shutdown();Map<String ,Object> re = new HashMap<String ,Object>();Map<String ,Object> imgList = new HashMap<String ,Object>();imgList.put("imageUrl",imgUrl);re.put("code",200);re.put("msg","上传成功");re.put("data",imgList);return re;}

单个文件上传

@PostMapping("uploadAliyunOSSByUtils")public AjaxResult uploadAliyunOSSByUtils( @RequestParam("files") MultipartFile img) throws IOException {if (!(img.getOriginalFilename().endsWith(".png")) && !(img.getOriginalFilename().endsWith(".jpg")) && !(img.getOriginalFilename().endsWith(".PNG"))) {try {return AjaxResult.error("文件类型错误,只能为png或者jpg");} catch (Exception e) {throw new RuntimeException(e);}}// 调用阿里云工具类进行文件上传AliOSSUtils aliOSSUtils = new AliOSSUtils();Map<String, Object> upload = aliOSSUtils.Upload(img);return AjaxResult.success(upload);}

多个文件上传

 // 阿里云存储(多张图片)@PostMapping("uploadAliyunOSSByUtilsArrayFils")public AjaxResult uploadAliyunOSSByUtilsArrayFils( MultipartFile[] imgList) throws IOException {Map<String, Object> objectObjectHashMap = new HashMap<>();// List<Object> objectsImages = new ArrayList<>();List<Map<String, Object>> objectsImages = new ArrayList<>();// 调用阿里云工具类进行文件上传for (MultipartFile img : imgList){Map<String, Object> uploadImd = aliOSSUtils.Upload(img);Map<String, Object> New_ = new HashMap<>();New_.put("strImg",uploadImd);objectsImages.add(New_);// objectsImages.add(uploadImd);}return AjaxResult.success(objectsImages);}

 单个删除

 // 阿里云删除单张图片@PostMapping("deleteAliyunOSSByUtils")public AjaxResult deleteAliyunOSSByUtils(@RequestBody Map<String,String> img) throws IOException {// 创建OSSClient实例。System.out.println(img);boolean b = aliOSSUtils.deleteFile(img);return AjaxResult.success(b);}

多个删除

 @PostMapping("deleteAliyunOSSByUtilsArrayList")public AjaxResult deleteAliyunOSSByUtilsArrayList(@RequestBody List<String> imgList) throws IOException {// 创建OSSClient实例。boolean b = aliOSSUtils.deleteAllFile(imgList);return AjaxResult.success(b);}

工具类

 /*删除工具类《单个》*/public boolean deleteFile(Map<String,String> fileUrl){OSS ossClient = new OSSClientBuilder().build(endpoint, accessKeyId, accessKeySecret);String img = fileUrl.get("img");int begin = (endpoint.split("//")[0] + "//" + bucketName + "." + endpoint.split("//")[1] + "/").length(); //找到文件路径的开始下标String deleteUrl = img.substring(begin);try {// 删除文件请求VoidResult voidResult = ossClient.deleteObject(bucketName, deleteUrl);System.out.println(voidResult+"删除chengg11111??222");return true;} catch (Exception e) {e.printStackTrace();return false;} finally {if (ossClient != null) {ossClient.shutdown();}}}/*删除工具类《多个》,主要就是要获取到相应的文件后缀,String deleteUrl = objImg.substring(begin);*/public boolean deleteAllFile(List<String> keys){OSS ossClient = new OSSClientBuilder().build(endpoint, accessKeyId, accessKeySecret);List<String> keysBox= new ArrayList<>();int begin = (endpoint.split("//")[0] + "//" + bucketName + "." + endpoint.split("//")[1] + "/").length(); //找到文件路径的开始下标for(String objImg : keys) {String deleteUrl = objImg.substring(begin);keysBox.add(deleteUrl);}try {DeleteObjectsResult deleteObjectsResult = ossClient.deleteObjects(new DeleteObjectsRequest(bucketName).withKeys(keysBox).withEncodingType("url"));List<String> deletedObjects = deleteObjectsResult.getDeletedObjects();try {for(String obj : deletedObjects) {String deleteObj =  URLDecoder.decode(obj, "UTF-8");System.out.println(deleteObj);}} catch (UnsupportedEncodingException e) {e.printStackTrace();}return true;} catch (Exception e) {e.printStackTrace();return false;} finally {if (ossClient != null) {ossClient.shutdown();}}}

学以致用,多做记录

http://www.lryc.cn/news/339394.html

相关文章:

  • Python的国际化和本地化【第162篇—国际化和本地化】
  • 播放Samba协议下的音视频文件
  • Excel全套213集教程
  • 【七 (1)指标体系建设-构建高效的故障管理指标体系】
  • Go gin框架(详细版)
  • Git分布式版本控制系统——Git常用命令(二)
  • LeetCode 59.螺旋矩阵II
  • 03-JAVA设计模式-适配器模式
  • MVVM架构模式
  • leetcode2924--找到冠军II
  • 嵌入式|蓝桥杯STM32G431(HAL库开发)——CT117E学习笔记13:RTC实时时钟
  • 统一用安卓Studio修改项目包名
  • Spring Cloud Gateway详细介绍以及实现动态路由
  • transformer上手(6)—— 微调预训练模型
  • web前端框架设计第四课-条件判断与列表渲染
  • 计算机网络:数据链路层 - CSMA/CD协议
  • 力扣LeetCode138. 复制带随机指针的链表 两种解法(C语言实现)
  • 强大的压缩和解压缩工具 Keka for Mac
  • 论文速读:Do Generated Data Always Help Contrastive Learning?
  • 华为欧拉系统(openEuler-22.03)安装深信服EasyConnect软件(图文详解)
  • git commit --amend用法
  • 分布式系统:缓存与数据库一致性问题
  • JavaEE企业开发新技术5
  • mysql dump导出导入数据
  • 刷题记录3
  • Decorator 装饰
  • SpringMVC:搭建第一个web项目并配置视图解析器
  • 一文了解HTTPS的加密原理
  • Ubuntu系统空间整理
  • PHP Storm 2024.1使用