文档首页 > > 最佳实践> OBS数据一致性校验> 校验上传对象的一致性

校验上传对象的一致性

分享
更新时间:2020/09/01 GMT+08:00

obsutil、OBS Browser+以及OBS SDK都支持在上传对象时进行一致性校验,您可以根据自己的业务选择任意一种方式进行校验。本文分别介绍了几种方式在上传对象时进行一致性校验的操作指导。

使用obsutil校验上传对象的一致性

obsutil支持在上传对象时通过附加参数(vmd5)来校验数据的一致性。

以在Windows操作系统上传本地一个位于D盘的test.txt文件至mytestbucket桶为例,开启一致性校验的命令示例如下:

obsutil cp D:\test.txt obs://mytestbucket/test.txt -vmd5

校验通过后,对象上传成功,系统显示Upload successfully的回显信息。

使用OBS Browser+校验上传对象的一致性

OBS Browser+默认关闭MD5校验,在OBS Browser+上启用MD5校验一致性并上传对象的步骤如下:

  1. 登录OBS Browser+。
  2. 单击客户端右上方的,并选择“高级设置”。
  3. 勾选“MD5校验”,如图1所示。

    图1 配置MD5校验

  4. 单击“确定”。
  5. 选择待上传文件的桶,上传文件。

    • 若MD5校验成功,则文件上传成功。
    • 若MD5校验失败,则文件上传失败,且在任务管理中提示失败原因:校验文件MD5失败。

使用OBS SDK校验上传对象的一致性

OBS提供Java、Python等多种语言的SDK,各SDK通过在上传对象时设置对象的Content-MD5值以开启一致性校验。如何计算并设置对象MD5值请前往OBS SDK参见各自开发指南的“设置对象属性”章节。

此处以使用OBS Java SDK上传Windows本地D盘一个名为text.txt的文本文件至mytestbucket为例,上传过程使用MD5值校验数据一致性的示例代码如下:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
String endPoint = "https://your-endpoint";
String ak = "*** Provide your Access Key ***";
String sk = "*** Provide your Secret Key ***";
// 创建ObsClient实例
ObsClient obsClient = new ObsClient(ak, sk, endPoint);
// 计算并设置MD5值
ObjectMetadata metadata = new ObjectMetadata();
File file = new File("D:\\text.txt");
FileInputStream fis = new FileInputStream(file);
InputStream is = (InputStream)fis;
String contentMd5 = obsClient.base64Md5(is);
metadata.addUserMetadata("contentMd5", contentMd5);
// 带MD5值上传文件
obsClient.putObject("mytestbucket", "text.txt", file, metadata);
  • 对象数据的MD5值必须经过Base64编码。
  • OBS服务端会将该MD5值与对象数据计算出的MD5值进行对比,如果不匹配则上传失败,返回HTTP 400错误。如果匹配,对象上传成功,返回HTTP 200状态码。
分享:

    相关文档

    相关产品

文档是否有解决您的问题?

提交成功!非常感谢您的反馈,我们会继续努力做到更好!
反馈提交失败,请稍后再试!

*必选

请至少选择或填写一项反馈信息

字符长度不能超过200

提交反馈 取消

如您有其它疑问,您也可以通过华为云社区问答频道来与我们联系探讨

智能客服提问云社区提问