我正在使用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中获取它?还是有另一种方法检查文件是否已正确上传?
如果我的理解是正确的,那么这个答案呢?
使用Drive API v2时,从files().get()
返回的值包括文件的MD5校验和。在这种情况下,请按如下所示修改脚本。
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
对于Drive 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
如果我误解了您的问题,而这不是您想要的结果,我深表歉意。