Springboot 从华为云OBS中打包下载文件到本地
文章目录
- 前言
- 一、OBS是什么?
- 二、使用步骤
- 1.引入依赖
- 2.获取obs中的一些参数:endPoint,ak,sk还有桶名(重要,必须要有)。
- 3.开始下载
- 4.设置out流的打包下载
- 总结
前言
对象存储服务(Object Storage Service,OBS)是一个基于对象的海量存储服务,为用户提供海量、安全、高可靠、低成本的数据存储能力,包括:创建、修改、删除桶,上传、下载、删除对象等。OBS为用户提供了超大存储容量的能力,适合存放任意类型的文件,适合普通用户、网站、企业和开发者使用。
对象存储服务支持通过OBS控制台上传最大为50MB的单个文件,以及通过OBS控制台将OBS中的文件下载至本地。但我们此次仅使用Java方式对OBS中的文件做打包下载处理
一、OBS是什么?
华为云对象存储服务(Object Storage Service,OBS),提供海量、安全、高可靠、低成本的数据存储能力,适合企业备份归档、视频点播/监控、大数据分析等多种数据存储场景。
二、使用步骤
1.引入依赖
代码如下(示例):
<dependency><groupId>com.huaweicloud</groupId><artifactId>esdk-obs-java</artifactId><version>3.20.6.1</version></dependency>
2.获取obs中的一些参数:endPoint,ak,sk还有桶名(重要,必须要有)。
3.开始下载
代码如下:
入了两个参数,一是obs中要下载的目录路径filesPath,二是创建的 ZipOutputStream out = new ZipOutputStream(response.getOutputStream());
中的输出流out。
解释:
if (!objectKey.endsWith("/"))此语句的说明:obs中objectKey获得目录下的所有文件名称,但是会多出来一个根目录的的文件名称(也就是说:假设一个根目录下有三个文件,但objectKey数组的size长度会等于4,下标为0的第一条数据就是根目录的名称),我们要把它舍弃掉,不然执行out.writer(b)就会出错。
try {ObsClient obsClient = new ObsClient(ak, sk, endPoint);ListObjectsRequest request = new ListObjectsRequest(bucketName);request.setPrefix(filesPath);request.setMaxKeys(500);ObjectListing result;result = obsClient.listObjects(request);for (ObsObject obsObject : result.getObjects()) {obsObject = obsClient.getObject(bucketName,obsObject.getObjectKey());String objectKey = obsObject.getObjectKey();if (!objectKey.endsWith("/")){int index = objectKey.lastIndexOf("/");String fileName = objectKey.substring(index+1);out.putNextEntry(new ZipEntry(fileName));InputStream in = obsObject.getObjectContent();int b;while ((b = in.read())!=-1){out.write(b);}} }} catch (ObsException | FileNotFoundException e) {e.printStackTrace();}return out;
4.设置out流的打包下载
注:zipFileName为压缩包名称,需要完整:xxx.zip
response.setHeader("content-type", "application/octet-stream");
// response.setContentType("application/octet-stream");response.setContentType("multipart/form-data");response.setHeader("Content-Disposition", "attachment;filename=" + URLEncoder.encode(zipFileName, "UTF-8"));out = new ZipOutputStream(response.getOutputStream());String filesPath = "该处为obs中要下载的路径/"obsUtil.download(filesPath, out);out.flush();
总结
此总结非常来之不易,测试不易,若有不懂可私信,希望给一颗小心心咯
Springboot 从华为云OBS中打包下载文件到本地相关推荐
- 前端js华为云obs上传下载文件与进度条的设置
前端js华为云obs上传下载文件与进度条的设置 首先下载OBS BrowserJS SDK安装包 用git将代码拉到本地 git clone https://github.com/huaweiclou ...
- sscom串口网络数据调试器使用post方法向华为云obs桶上传文件和图片
原贴地址:sscom串口网络数据调试器使用post方法向华为云obs桶上传文件和图片-云社区-华为云 [摘要] 之前发了文章"postman使用post方法向华为云obs桶上传文件和图片&q ...
- postman使用put方法向华为云obs桶上传文件和图片
原贴地址:https://bbs.huaweicloud.com/blogs/298147 [摘要] postman使用put方法向华为云obs桶上传文件和图片.记录下过程. postman使用put ...
- java集成华为云obs上传下载实战
说明 最近项目上需要开发一个服务去和华为云OBS集成获取一些业务上的文件,此处记录一下简单的java集成obs的入门,希望对大家快速入门有所帮助:) 实现效果 上传对象 下载到本地 操作步骤 1.开通 ...
- SpringBoot整合华为云OBS
一.参考项 华为云 OBS(官网): 对象存储服务OBS官网_海量安全高可靠_数据云存储解决方案-华为云 OBS SDK for Java(官网): SDK下载_对象存储服务 OBS_Java_华为云 ...
- SpringBoot整合华为云OBS实现文件上传下载
首先我们要添加对应的依赖 <dependency><groupId>com.huaweicloud</groupId><artifactId>esdk- ...
- 云存储解决方案-华为云OBS服务的基础使用
云存储解决方案-华为云OBS 云存储解决方案-华为云OBS 1. 简介 2. 开通OBS 2.1 进入官网 2.2 充值(可以不做) 2.3. 开通OBS 3. OBS快速入门 3.1 创建测试工程, ...
- 基于华为云obs实现文件上传下载(技术栈mysql+springboot+Maven+jsp+java)的技术分享
基于华为云obs实现文件上传下载(技术栈mysql+springboot+jsp+java)的技术分享 obs实现文件上传下载 前言 一.OBS是什么? 二.使用步骤 1.1 前期准备 2 工具的内容 ...
- springboot使用华为OBS上传下载文件详解
文章目录 一.华为云OBS的基本操作 1.华为云账号注册登录 2.购买OBS对象 3. 获取自身账户的访问密钥(ak,sk)(Springboot项目上传和下载需使用) 4.下载OBS Browser ...
最新文章
- 饿了么四年、阿里两年:研发路上的一些总结与思考
- linux dmesg 格式化时间
- 小米网络推广连夜更换品牌LOGO——科技越是进化就越接近生命的形态
- 推荐系统炼丹笔记:令人着迷的时间动态CF算法
- 【斐波那契数列】算法优化笔记
- Java之通过Collections.synchronizedMap创建线程安全的HashMap
- 51单片机auxr寄存器_51—52系列单片机特殊功能寄存器一览表
- 2018.9--2019.7 Java开发工作中的经验和教训之db2数据库操作
- python面试题之用列表解析式选出1-100中的奇数
- SAP License:SAP 更改背景图片
- BaseAnimation
- DevOps实践教程 华为云 系列教程2021 合集
- table中td的内容换行。
- linux系统连接实验室服务器步骤详解
- ajax双子星,荷兰双子星德里赫特和德容哪个厉害
- 【树莓派Zero】1- 简介
- 一路(16)有你,一起(17)前行
- 最新解决谷歌翻译无法使用的教程
- 用Python的matplotlib绘制残差分析散点误差棒图
- Spring Web : FormHttpMessageConverter
热门文章
- fMRI脑影像特征提取——Pearson相关与低阶功能连接LOFC(dpabi+nilearn)
- Paint X for Mac破解教程
- 如何在群里引流?如何通过别人的群引流?建一个群怎么快速裂变引流
- shell 数组介绍
- requests案例--度娘翻译
- Unity 使用 Behaviac (二)让unity的行为能执行behaviac搭建的树的逻辑
- shell脚本监控网站是否正常
- Excel导出工具类
- 压缩pdf大小的方法?怎样压缩pdf大小?pdf文档怎么压缩?pdf文件太大怎么压缩?pdf文件太大怎么压缩成小内存?如何降低pdf文件大小?怎么把pdf文件压缩到指定大小?压缩pdf的简单方法
- 电脑文件定时备份到U盘