OSS Android SDK提供了数据完整性校验方法,保证您在上传、下载和拷贝过程中数据的安全性。
由于移动端网络环境的复杂性,数据在客户端和服务器之间传输时可能会出错。为此,OSS Android SDK 提供了基于CRC端到端以及MD5两种数据完整性校验方式。
- CRC校验
在读取下载数据流的时候,如果开启了CRC校验,会在数据流读取完毕后自动验证数据完整性。
以下代码用于开启CRC校验:
GetObjectRequest request = new GetObjectRequest(OSSTestConfig.ANDROID_TEST_BUCKET, testFile); //开启CRC效验。 request.setCRC64(OSSRequest.CRC64Config.YES); //.... try{ GetObjectResult result = oss.getObject(request); InputStream in = result.getObjectContent(); ByteArrayOutputStream output = new ByteArrayOutputStream(); byte[] buffer = new byte[BUFFER_SIZE]; int len; while ((len = in.read(buffer)) > -1) { output.write(buffer, 0, len); } output.flush(); in.close(); }catch(ClientException e){ //... }catch(InconsistentException e){ //.... }
- MD5校验
如果要校验分片上传到OSS的文件和本地文件是否一致,可以在上传分片时携带分片的Content-MD5值,OSS服务器会帮助用户进行MD5校验。只有OSS服务器接收到的分片MD5值和Content-MD5一致时才可以上传成功,从而保证上传分片的一致性。
以下代码用于设置MD5验证:
UploadPartRequest uploadPart = new UploadPartRequest("<bucketName>", "<objectKey>", uploadId, currentIndex); // 设置分片内容 uploadPart.setPartContent(partData); //设置MD5内容 uploadPart.setMd5Digest(BinaryUtil.calculateBase64Md5(data));