对象存储服务 OBS-校验下载对象的一致性:方式三:使用OBS SDK校验下载对象的一致性

时间:2024-05-20 17:04:13

方式三:使用OBS SDK校验下载对象的一致性

OBS SDK对待下载对象的自定义元数据中的MD5值和下载到本地的对象的MD5值进行对比,通过对比结果判断下载对象的一致性。

此处以使用OBS Java SDK下载mytestbucket桶中一个名为test.txt的文本文件为例,下载过程使用MD5值校验数据一致性的示例代码如下:
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
String endPoint = "https://your-endpoint";
// 认证用的ak和sk硬编码到代码中或者明文存储都有很大的安全风险,建议在配置文件或者环境变量中密文存放,使用时解密,确保安全;本示例以ak和sk保存在环境变量中为例,运行本示例前请先在本地环境中设置环境变量ACCESS_KEY_ID和SECRET_ACCESS_KEY_ID。
// 您可以登录访问管理控制台获取访问密钥AK/SK,获取方式请参见https://support.huaweicloud.com/usermanual-ca/ca_01_0003.html
String ak = System.getenv("ACCESS_KEY_ID");
String sk = System.getenv("SECRET_ACCESS_KEY_ID");
// 创建ObsClient实例
final ObsClient obsClient = new ObsClient(ak, sk, endPoint);
// 获取对象的MD5值
ObjectMetadata metadata = obsClient.getObjectMetadata("mytestbucket", "test.txt");
String md5Origin = metadata.getUserMetadata("contentMd5");
// 计算下载后对象的MD5值
Obsobject obsobject = obsClient.getObject("mytestbucket", "test.txt");
String md5Download = obsClient.base64Md5(obsobject.getObjectContent());
// 对比MD5值
if(md5Origin.contentEquals(md5Download))
    System.out.println("Object MD5 validation passes!\n");
else
    System.out.println("Object MD5 validation failed!\n"); 

在以上示例代码中,获取对象MD5值时的contentMd5是在上传时设置的自定义元数据,实际开发中需要根据自定义的元数据名称修改。

support.huaweicloud.com/bestpractice-obs/obs_05_0803.html