当前位置: 首页 > 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();}}}

学以致用,多做记录

相关文章:

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

请自行替换秘钥&#xff1a; #阿里云 OSS src/main/resources/application.properties #不同的服务器&#xff0c;地址不同 aliyun.oss.file.endpointhttps://oss-cn-hangzhou.aliyuncs.com aliyun.oss.file.accessKeyIdLTAI5t9wUqCoD42qPGRy8S aliyun.oss.file.accessKeySecre…...

Python的国际化和本地化【第162篇—国际化和本地化】

&#x1f47d;发现宝藏 前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。【点击进入巨牛的人工智能学习网站】。 随着全球化的发展&#xff0c;多语言支持在软件开发中变得越来越重要。Python作为一种流行的…...

播放Samba协议下的音视频文件

Samba&#xff08;也被称为SMB/CIFS&#xff09;是一个用于在局域网内共享文件和打印服务的协议&#xff0c;广泛应用于Windows和Linux系统之间的文件共享。 一、展示Samba服务器下的文件 使用如jcifs这样的Java库来在安卓应用中集成SMB/CIFS客户端功能。这个库提供了与SMB/CI…...

Excel全套213集教程

Excel全套213集教程 包含技术入门93集 图表17集 数据透视35集 公式函数68 基础入门 93节 https://www.alipan.com/s/cMxuPstkS1x 提取码: 77dd 点击链接保存&#xff0c;或者复制本段内容&#xff0c;打开「阿里云盘」APP &#xff0c;无需下载极速在线查看&#xff0c;视…...

【七 (1)指标体系建设-构建高效的故障管理指标体系】

目录 文章导航一、故障概述1、故障&#xff1a;2、故障管理&#xff1a; 二、指标体系概述1、指标2、指标体系 三、指标体系构建难点1、管理视角2、业务视角3、技术视角 四、指标体系构建原则1、与战略目标对齐2、综合和平衡3、数据可获得性4、可操作性5、具体和可衡量6、参与和…...

Go gin框架(详细版)

目录 0. 为什么会有Go 1. 环境搭建 2. 单-请求&&返回-样例 3. RESTful API 3.1 首先什么是RESTful API 3.2 Gin框架支持RESTful API的开发 4. 返回前端代码 go.main index.html 5. 添加静态文件 main.go 改动的地方 index.html 改动的地方 style.css 改动…...

Git分布式版本控制系统——Git常用命令(二)

五、Git常用命令————分支操作 同一个仓库可以有多个分支&#xff0c;各个分支相互独立&#xff0c;互不干扰 分支的相关命令&#xff0c;具体如下&#xff1a; git branch 查看分支 git branch [name] 创建分支&#x…...

LeetCode 59.螺旋矩阵II

LeetCode 59.螺旋矩阵II 1、题目 力扣题目链接&#xff1a;59. 螺旋矩阵 II - 力扣&#xff08;LeetCode&#xff09; 给你一个正整数 n &#xff0c;生成一个包含 1 到 n2 所有元素&#xff0c;且元素按顺时针顺序螺旋排列的 n x n 正方形矩阵 matrix 。 示例 1&#xff1…...

03-JAVA设计模式-适配器模式

适配器模式 设么是适配器模式 它属于结构型模式&#xff0c;主要用于将一个类的接口转换成客户端所期望的另一种接口&#xff0c;从而使得原本由于接口不兼容而无法协同工作的类能够一起工作。 适配器模式主要解决的是不兼容接口的问题。在软件开发中&#xff0c;经常会有这…...

MVVM架构模式

目录 MVVM 数据绑定方式 实现方式 Model View ViewModel 数据绑定方式 vue&#xff1a;&#xff1a; 数据劫持和发布-订阅模式&#xff1a; Object.defineProperty() 方法来劫持&#xff08;监控&#xff09;各属性的 getter 、setter &#xff0c;并在数据&#xff08;对…...

leetcode2924--找到冠军II

1. 题意 给定一个有向无环图&#xff0c;方向表示胜负关系&#xff1b;求最后胜出的人。 2. 题解 将所有人标记为胜者&#xff0c;统计出度去掉对应胜者标记&#xff1b; 最后统计胜者数目&#xff0c;是否大于1&#xff0c;若大于1&#xff0c;则没有胜者&#xff0c;否则…...

嵌入式|蓝桥杯STM32G431(HAL库开发)——CT117E学习笔记13:RTC实时时钟

系列文章目录 嵌入式|蓝桥杯STM32G431&#xff08;HAL库开发&#xff09;——CT117E学习笔记01&#xff1a;赛事介绍与硬件平台 嵌入式|蓝桥杯STM32G431&#xff08;HAL库开发&#xff09;——CT117E学习笔记02&#xff1a;开发环境安装 嵌入式|蓝桥杯STM32G431&#xff08;…...

统一用安卓Studio修改项目包名

可以逃跑&#xff0c;可以哭泣&#xff0c;但不可以放弃 --《鬼灭之刃》 修改项目包名 1&#xff09;选中项目中药修改的包名&#xff1a; 2)目结构显示方式&#xff0c;取消 Compact Middle Packages 选项&#xff1b; 3)右键要修改的包名&#xff0c;选择 Refactor —— Re…...

Spring Cloud Gateway详细介绍以及实现动态路由

一. 简介 Spring Cloud Gateway This project provides a libraries for building an API Gateway on top of Spring WebFlux or Spring WebMVC. Spring Cloud Gateway aims to provide a simple, yet effective way to route to APIs and provide cross cutting concerns to …...

transformer上手(6)—— 微调预训练模型

1 加载数据集 以同义句判断任务为例&#xff08;每次输入两个句子&#xff0c;判断它们是否为同义句&#xff09;&#xff0c;构建我们的第一个 Transformers 模型。我们选择蚂蚁金融语义相似度数据集 AFQMC 作为语料&#xff0c;它提供了官方的数据划分&#xff0c;训练集 / …...

web前端框架设计第四课-条件判断与列表渲染

web前端框架设计第四课-条件判断与列表渲染 一.预习笔记 1.条件判断 1-1&#xff1a;v-if指令&#xff1a;根据表达式的值来判断是否输出DOM元素 1-2&#xff1a;template中使用v-if 1-3&#xff1a;v-else 1-4&#xff1a;v-else-if 1-5&#xff1a;v-show&#xff08;不支…...

计算机网络:数据链路层 - CSMA/CD协议

计算机网络&#xff1a;数据链路层 - CSMA/CD协议 媒体接入控制CSMA/CD协议截断二进制指数退避算法帧长与帧间间隔信道利用率 媒体接入控制 如图所示&#xff0c;这是一根同轴电缆&#xff0c;有多台主机连接到这根同轴电缆上&#xff0c;他们共享这根传输媒体&#xff0c;形成…...

力扣LeetCode138. 复制带随机指针的链表 两种解法(C语言实现)

目录 题目链接 题目分析 题目定位&#xff1a; 解题思路 解题思路1&#xff08;粗暴但是复杂度高&#xff09; 解题思路2&#xff08;巧妙并且复杂度低&#xff09; 题目链接 138. 复制带随机指针的链表https://leetcode-cn.com/problems/copy-list-with-random-pointer/ …...

强大的压缩和解压缩工具 Keka for Mac

Keka for Mac是一款功能强大的压缩和解压缩工具&#xff0c;专为Mac用户设计。它支持多种压缩格式&#xff0c;包括7z、Zip、Tar、Gzip和Bzip2等&#xff0c;无论是发送电子邮件、备份文件还是节省磁盘空间&#xff0c;Keka都能轻松满足用户需求。 这款软件的操作简单直观&…...

论文速读:Do Generated Data Always Help Contrastive Learning?

在对比学习领域&#xff0c;最近很多研究利用高质量生成模型来提升对比学习 给定一个未标记的数据集&#xff0c;在其上训练一个生成模型来生成大量的合成样本&#xff0c;然后在真实数据和生成数据的组合上执行对比学习这种使用生成数据的最简单方式被称为“数据膨胀”这与数据…...

AI Agent 对比和选型

一、前言&#xff01;&#xff01;&#xff01;Agent&#xff0c;把天才 AI 变成一个能干活的人 &#xff01;&#xff01;&#xff01;如果说 LLM 大模型是一个天才引擎&#xff0c;那么 Agent 就是很多无形的手&#xff0c;去控制这个天才引擎完成各种各样的工作和流程&#…...

OnmyojiAutoScript:阴阳师全自动脚本终极指南,30+日常任务智能托管解放双手

OnmyojiAutoScript&#xff1a;阴阳师全自动脚本终极指南&#xff0c;30日常任务智能托管解放双手 【免费下载链接】OnmyojiAutoScript Onmyoji Auto Script | 阴阳师脚本 项目地址: https://gitcode.com/gh_mirrors/on/OnmyojiAutoScript 阴阳师作为一款深受玩家喜爱的…...

CC Desktop:基于Claude Code CLI的桌面AI编程工作台深度解析

1. 项目概述&#xff1a;一个为AI编程而生的桌面工作台 如果你和我一样&#xff0c;每天大部分时间都泡在终端里&#xff0c;和Claude Code CLI打交道&#xff0c;那你肯定也经历过这种场景&#xff1a;一边开着终端窗口敲命令&#xff0c;一边还得在浏览器和代码编辑器之间来…...

渗透测试之信息收集:这些技巧决定了渗透成败

渗透测试之信息收集&#xff1a;这些技巧决定了渗透成败作者&#xff1a;浅木先生前言 做渗透测试久了&#xff0c;你会越来越认同一个观点&#xff1a;信息收集的质量直接决定渗透测试的成败。 同样的目标URL&#xff0c;不同人扫出来的结果完全不同——有人只能扫出后台登录页…...

[特殊字符] 科普:论文查重的AI原理是什么?这个免费工具把“黑科技“讲明白了

同学们好&#xff0c;我是你们的论文写作科普博主。 今天不聊怎么选题&#xff0c;不聊怎么写文献综述&#xff0c;咱们来聊一个99%的同学都踩过坑的环节——查重。 先问大家一个问题&#xff1a;你知道查重到底是怎么查的吗&#xff1f; 很多同学以为查重就是"把你的文…...

大模型SFT泛化能力受多因素制约,推理提升或伴随安全性下降

大模型SFT泛化能力研究背景随着大模型后训练&#xff08;Post - training&#xff09;技术的发展&#xff0c;强化学习&#xff08;RL&#xff09;在提升模型推理能力方面表现备受瞩目。在此背景下&#xff0c;学术界形成了“ SFT记忆&#xff0c;RL泛化&#xff08;SFT memori…...

【粉丝福利社】三维重建技术与实践:基于NeRF与3DGS

&#x1f48e;【行业认证权威头衔】 ✔ 华为云天团核心成员&#xff1a;特约编辑/云享专家/开发者专家/产品云测专家 ✔ 开发者社区全满贯&#xff1a;CSDN博客&商业化双料专家/阿里云签约作者/腾讯云内容共创官/掘金&亚马逊&51CTO顶级博主 ✔ 技术生态共建先锋&am…...

JY901陀螺仪数据解析实战:从原始字节到工程可用的姿态角(附完整代码)

JY901陀螺仪数据解析实战&#xff1a;从原始字节到工程可用的姿态角&#xff08;附完整代码&#xff09; 在嵌入式开发中&#xff0c;姿态感知是实现自动平衡、导航定位等功能的基石。JY901作为一款高性价比的9轴运动传感器&#xff0c;其输出的原始数据需要经过精确解析才能转…...

从零构建趣味AI应用:技术架构、核心实现与部署实战

1. 项目概述与核心价值最近在GitHub上看到一个挺有意思的项目&#xff0c;叫miaoquai&#xff0c;作者是jingchang0623。光看这个名字&#xff0c;可能有点摸不着头脑&#xff0c;但点进去一看&#xff0c;发现这是一个关于“喵趣AI”的开源项目。作为一个在AI应用和开源社区混…...

FPGA仿真入门:手把手教你配置Quartus Prime 21.1里的Questa Starter版(附12个月免费许可攻略)

FPGA仿真工具链实战&#xff1a;从Questa Starter许可申请到Quartus Prime深度集成 当数字逻辑设计从纸上谈兵进入硬件实现阶段&#xff0c;仿真验证便成为FPGA开发流程中不可逾越的质量关卡。作为Intel FPGA生态中的黄金搭档&#xff0c;Quartus Prime与Questa的协同工作能帮助…...