Google Python 中的 Cloud Storage 客户端是否自动检查 CRC(或 MD5)?
Does Google Cloud Storage client in Python check CRC (or MD5) automatically?
我试过 GCS Python client, and more specifically, blob.upload_from_file()
and blob.download_to_file()
是否自动检查上传或下载文件的完整性。如果没有,我如何以编程方式检查 CRC 哈希?任何指向文档或源代码的指针都将不胜感激。
目前,GCS Python 包中的完整性验证并未完全自动支持上传和下载。
下载
支持未分块的下载或合成操作的结果[7] in the dependency google-resumable-media-python[4] which provides integrity verification for only an object's MD5 checksum. One main reasons for not supporting chunked verification is due to the Google Cloud Storage API not returning MD5 or CRC32C checksums for chunks of an object. MD5 and CRC32C checksums are only available for the full object data. Downloads aren't chunked when a blob's instance _chunk_size
is None
which is the default value for new instances of Blob
[1]. The underlying package google-resumable-media-python[2] verifies integrity[3] for the google-cloud-storage package[4] which is used by blob.download_to_file
[5]。目前不支持CRC32C校验
上传
上传要求开发人员在执行上传之前执行 MD5 或 CRC32C 校验和,例如使用 blob.upload_from_file()
[6].
假设您已经知道对象的 base64 形式的 CRC32C 或 MD5 的示例(这些字段是可选的,仅在上传时使用):
from google.cloud import storage
storage_client = storage.Client()
bucket = storage_client.bucket("bucket-name")
new_blob = bucket.blob("new-blob-name")
# base64 encoded CRC32C
new_blob.crc32c = "EhUJRQ=="
# base64 encoded MD5
new_blob.md5_hash = "DDzeBxm1uuDBNd9hEy8WBA=="
with open('my-file', 'rb') as my_file:
new_blob.upload_from_file(my_file)
Google Cloud Storage 将使用这些校验和来验证上传服务器端,只有在没有发现错误时才会完成上传。
正在为 Python 中的对象计算 MD5 或 CRC32C。
对于 Python 中的对象校验和,我将推迟到以下 Whosebug 问题 MD5 Generating an MD5 checksum of a file
CRC32C
我目前没有强烈推荐的特定软件包,但 crcmod and crc32c 软件包确实存在,它们可以帮助您以编程方式使用 CRC32C 校验和数据。
使用crc32c包生成GCS CRC32C校验和期望值的例子:
from crc32c import crc32
import base64
with open('file-name') as f:
# Read data and checksum
checksum = crc32(f.read().encode())
# Convert into a bytes type that can be base64 encoded
base64_crc32c = base64.b64encode(checksum.to_bytes(length=4, byteorder='big')).decode('utf-8')
# Print the Base64 encoded CRC32C
print(base64_crc32c)
HTH
我试过 GCS Python client, and more specifically, blob.upload_from_file()
and blob.download_to_file()
是否自动检查上传或下载文件的完整性。如果没有,我如何以编程方式检查 CRC 哈希?任何指向文档或源代码的指针都将不胜感激。
目前,GCS Python 包中的完整性验证并未完全自动支持上传和下载。
下载
支持未分块的下载或合成操作的结果[7] in the dependency google-resumable-media-python[4] which provides integrity verification for only an object's MD5 checksum. One main reasons for not supporting chunked verification is due to the Google Cloud Storage API not returning MD5 or CRC32C checksums for chunks of an object. MD5 and CRC32C checksums are only available for the full object data. Downloads aren't chunked when a blob's instance _chunk_size
is None
which is the default value for new instances of Blob
[1]. The underlying package google-resumable-media-python[2] verifies integrity[3] for the google-cloud-storage package[4] which is used by blob.download_to_file
[5]。目前不支持CRC32C校验
上传
上传要求开发人员在执行上传之前执行 MD5 或 CRC32C 校验和,例如使用 blob.upload_from_file()
[6].
假设您已经知道对象的 base64 形式的 CRC32C 或 MD5 的示例(这些字段是可选的,仅在上传时使用):
from google.cloud import storage
storage_client = storage.Client()
bucket = storage_client.bucket("bucket-name")
new_blob = bucket.blob("new-blob-name")
# base64 encoded CRC32C
new_blob.crc32c = "EhUJRQ=="
# base64 encoded MD5
new_blob.md5_hash = "DDzeBxm1uuDBNd9hEy8WBA=="
with open('my-file', 'rb') as my_file:
new_blob.upload_from_file(my_file)
Google Cloud Storage 将使用这些校验和来验证上传服务器端,只有在没有发现错误时才会完成上传。
正在为 Python 中的对象计算 MD5 或 CRC32C。
对于 Python 中的对象校验和,我将推迟到以下 Whosebug 问题 MD5 Generating an MD5 checksum of a file
CRC32C
我目前没有强烈推荐的特定软件包,但 crcmod and crc32c 软件包确实存在,它们可以帮助您以编程方式使用 CRC32C 校验和数据。
使用crc32c包生成GCS CRC32C校验和期望值的例子:
from crc32c import crc32
import base64
with open('file-name') as f:
# Read data and checksum
checksum = crc32(f.read().encode())
# Convert into a bytes type that can be base64 encoded
base64_crc32c = base64.b64encode(checksum.to_bytes(length=4, byteorder='big')).decode('utf-8')
# Print the Base64 encoded CRC32C
print(base64_crc32c)
HTH