Springboot 从华为云OBS中打包下载文件到本地


前言

对象存储服务(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还有桶名(重要,必须要有)。
解释:

if (!objectKey.endsWith(“/”))此语句的说明:obs中objectKey获得目录下的所有文件名称,但是会多出来一个根目录的的文件名称(也就是说:假设一个根目录下有三个文件,但objectKey数组的size长度会等于4,下标为0的第一条数据就是根目录的名称),我们要把它舍弃掉,不然执行out.writer(b)就会出错。

@Component
public class ObsUtil {
   
   
    private static final String ak = "xsxsaxsa";
    private static final String sk = "xxxxxxxx";
    private static final String en
### Spring Boot 整合华为云 OBS 配置教程 #### 一、环境准备 为了成功地将华为云对象存储服务 (OBS) 集成到 Spring Boot 应用程序中,需先完成必要的准备工作。这包括获取访问密钥(AK/SK)、设置好开发环境以及安装所需的依赖项。 对于 AK 和 SK 的申请,建议通过华为云控制台进行操作并妥善保管这些凭证信息[^1]。 #### 二、Maven 依赖引入 在 `pom.xml` 文件内添加如下 Maven 依赖来引入 Huawei Cloud SDK Java: ```xml <dependency> <groupId>com.huaweicloud</groupId> <artifactId>huawei-obs-sdk</artifactId> <version>LATEST_VERSION</version><!-- 替换成最新版本号 --> </dependency> ``` 此步骤确保应用程序能够调用 OBS API 进行数据交互[^2]。 #### 三、配置文件设置 编辑项目的 application.properties 或者 application.yml 来定义连接至 OBS 所必需的信息,比如 endpoint 地址、access key ID 及 secret access key: ```yaml # application.yml 示例 obs: ak: YOUR_ACCESS_KEY_ID # 访问密钥ID sk: YOUR_SECRET_ACCESS_KEY # 密码 endpoint: https://your-endpoint.obs.cn-north-4.myhuaweicloud.com/ # 终端节点URL,请替换为实际区域对应的地址 ``` 上述配置允许应用轻松切换不同的 OBS 实例而无需更改源代码逻辑。 #### 四、Java 代码实现 下面给出一段简单的例子展示怎样利用已有的配置向指定桶上传文件: ```java import com.obs.services.ObsClient; import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Service; @Service public class ObsService { @Value("${obs.ak}") private String ak; @Value("${obs.sk}") private String sk; @Value("${obs.endpoint}") private String endpoint; public void uploadFile(String bucketName, String objectKey, File file){ try(ObsClient obsClient = new ObsClient(ak,sk,endpoint)){ PutObjectResult result = obsClient.putObject(bucketName,objectKey,file); System.out.println("Etag:" + result.getETag()); System.out.println("Version Id:" + result.getVersionId()); } catch(Exception e){ throw new RuntimeException(e.getMessage(),e); } } } ``` 这段代码展示了如何初始化一个 `ObsClient` 客户端实例,并使用它执行 PUT 请求以上传文件到特定位置。注意这里采用了资源管理器模式 (`try-with-resources`) 自动关闭客户端连接,从而避免潜在的内存泄漏风险[^3]。
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值