开发者社区> 问答> 正文

对象存储 OSS数据完整性校验

已解决

展开
收起
2018-01-18 09:28:50 1459 0
1 条回答
写回答
取消 提交回答
  • 采纳回答

    详细解答可以参考官方帮助文档

    因为移动端网络环境的复杂性,数据在客户端和服务器之间传输时有可能会出错。因此OSS SDK在下载过程中提供了基于CRC的端到端的数据完整性效验功能。

    CRC校验在读取下载过程中时候,如果开启了crc效验,并有在传输中有数据错误的情况。会提示OSSClientErrorCodeInvalidCRC的错误。注:如果用户

    1. OSSGetObjectRequest * request = [OSSGetObjectRequest new];
    2. request.bucketName = ...;
    3. //开启crc效验
    4. request.crcFlag = OSSRequestCRCOpen;
    5. OSSTask * task = [testProxyClient getObject:request];
    6. [[task continueWithBlock:^id(OSSTask *task) {
    7. //如果开启了crc效验,并有在传输中有数据错误的情况。会提示OSSClientErrorCodeInvalidCRC的错误
    8. XCTAssertNil(task.error);
    9. return nil;
    10. }] waitUntilFinished];
    11. 注:如果设置onReceiveData block。开启CRC效验后,需要自行比较CRC数值是否一致。范例如下
    12. OSSGetObjectRequest * request = [OSSGetObjectRequest new];
    13. request.bucketName = ....
    14. request.crcFlag = OSSRequestCRCOpen;
    15. ....
    16. __block uint64_t localCrc64 = 0;
    17. //如果设置onReceiveData block
    18. NSMutableData *receivedData = [NSMutableData data];
    19. request.onRecieveData = ^(NSData *data) {
    20. if (data)
    21. {
    22. NSMutableData *mutableData = [data mutableCopy];
    23. void *bytes = mutableData.mutableBytes;
    24. localCrc64 = [OSSUtil crc64ecma:localCrc64 buffer:bytes length:data.length];
    25. [receivedData appendData:data];
    26. }
    27. };
    28. __block uint64_t remoteCrc64 = 0;
    29. OSSTask * task = [_client getObject:request];
    30. [[task continueWithBlock:^id(OSSTask *task) {
    31. XCTAssertNil(task.error);
    32. OSSGetObjectResult *result = task.result;
    33. if (result.remoteCRC64ecma)
    34. {
    35. NSScanner *scanner = [NSScanner scannerWithString:result.remoteCRC64ecma];
    36. [scanner scanUnsignedLongLong:&remoteCrc64];
    37. if (remoteCrc64 == localCrc64)
    38. {
    39. NSLog(@"crc64校验成功!");
    40. }
    41. else
    42. {
    43. NSLog(@"crc64校验失败!");
    44. }
    45. }
    46. return nil;
    47. }] waitUntilFinished];
    2018-01-19 14:38:04
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
OSS运维进阶实战手册 立即下载
《OSS运维基础实战手册》 立即下载
OSS运维基础实战手册 立即下载