可靠地将大文件上传到 Google 云端硬盘
Reliably upload large files to Google Drive
我正在使用 Python googleapiclient 将一些大文件上传到 Google 云端硬盘。我想确保文件已正确上传。我想方设法在 Google 驱动器上获取文件的 MD5 校验和,但没有成功。这是代码:
def print_file_metadata(service, file_id):
"""Print a file's metadata.
Args:
service: Drive API service instance.
file_id: ID of the file to print metadata for.
"""
try:
file = service.files().get(fileId=file_id).execute()
print('Title: %s' % file['title'])
print('MIME type: %s' % file['mimeType'])
except errors.HttpError as error:
print('An error occurred: %s' % error)
对于我测试的文件,似乎文件 dict 不包含其 MD5 校验和。有什么方法可以从 API 中获取它吗?或者是否有其他方法检查文件是否已正确上传?
- 您想使用驱动器 API 检索文件的 MD5 校验和。
- 您已经可以使用 Drive API 放置和获取文件。
- 从你的脚本来看,你似乎正在使用 Drive API v2.
- 您想使用 google-api-python-client 和 python.
来实现此目的
如果我的理解是正确的,这个答案怎么样?
当使用 Drive API v2 时,从 files().get()
返回的值包括文件的 MD5 校验和。在这种情况下,请修改您的脚本如下。
修改后的脚本:对于驱动器 API v2
file = service.files().get(fileId=file_id).execute()
print('Title: %s' % file['title'])
print('MIME type: %s' % file['mimeType'])
print('MD5: %s' % file['md5Checksum']) # <--- Added
修改后的脚本:驱动器 API v3
对于驱动器 API v3,从 files().get()
返回的值不包括文件的 MD5 校验和。因此,作为几种方法之一,您可以像下面这样使用 fields='*'
。但在这种情况下,文件名是 file['name']
。请注意这一点。
file = service.files().get(fileId=file_id, fields='*').execute() # <--- Modified
print('Title: %s' % file['name']) # <--- Modified
print('MIME type: %s' % file['mimeType'])
print('MD5: %s' % file['md5Checksum']) # <--- Added
参考文献:
如果我误解了您的问题而这不是您想要的结果,我深表歉意。
我正在使用 Python googleapiclient 将一些大文件上传到 Google 云端硬盘。我想确保文件已正确上传。我想方设法在 Google 驱动器上获取文件的 MD5 校验和,但没有成功。这是代码:
def print_file_metadata(service, file_id):
"""Print a file's metadata.
Args:
service: Drive API service instance.
file_id: ID of the file to print metadata for.
"""
try:
file = service.files().get(fileId=file_id).execute()
print('Title: %s' % file['title'])
print('MIME type: %s' % file['mimeType'])
except errors.HttpError as error:
print('An error occurred: %s' % error)
对于我测试的文件,似乎文件 dict 不包含其 MD5 校验和。有什么方法可以从 API 中获取它吗?或者是否有其他方法检查文件是否已正确上传?
- 您想使用驱动器 API 检索文件的 MD5 校验和。
- 您已经可以使用 Drive API 放置和获取文件。
- 从你的脚本来看,你似乎正在使用 Drive API v2.
- 您想使用 google-api-python-client 和 python. 来实现此目的
如果我的理解是正确的,这个答案怎么样?
当使用 Drive API v2 时,从 files().get()
返回的值包括文件的 MD5 校验和。在这种情况下,请修改您的脚本如下。
修改后的脚本:对于驱动器 API v2
file = service.files().get(fileId=file_id).execute()
print('Title: %s' % file['title'])
print('MIME type: %s' % file['mimeType'])
print('MD5: %s' % file['md5Checksum']) # <--- Added
修改后的脚本:驱动器 API v3
对于驱动器 API v3,从 files().get()
返回的值不包括文件的 MD5 校验和。因此,作为几种方法之一,您可以像下面这样使用 fields='*'
。但在这种情况下,文件名是 file['name']
。请注意这一点。
file = service.files().get(fileId=file_id, fields='*').execute() # <--- Modified
print('Title: %s' % file['name']) # <--- Modified
print('MIME type: %s' % file['mimeType'])
print('MD5: %s' % file['md5Checksum']) # <--- Added
参考文献:
如果我误解了您的问题而这不是您想要的结果,我深表歉意。