可靠地将大文件上传到Google云端硬盘

问题描述 投票:0回答:1

我正在使用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中获取它?还是有另一种方法检查文件是否已正确上传?

python google-api-python-client
1个回答
0
投票
  • 您想使用Drive API检索文件的MD5校验和。
  • 您已经可以使用Drive API放置和获取文件。
    • 从您的脚本看来,您正在使用Drive API v2。
  • 您想使用带有python的google-api-python-client实现此功能。

如果我的理解是正确的,那么这个答案呢?

使用Drive API v2时,从files().get()返回的值包括文件的MD5校验和。在这种情况下,请按如下所示修改脚本。

修改的脚本:对于Drive 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

修改的脚本:对于Drive API v3

对于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

参考:

如果我误解了您的问题,而这不是您想要的结果,我深表歉意。

© www.soinside.com 2019 - 2024. All rights reserved.