可靠地上传大文件到谷歌Dri

2024-10-06 14:22:44 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在使用Python googleapiclient将一些大文件上传到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中得到它吗?或者是否有其他方法检查文件是否已正确上传


Tags: 文件apiidservicegoogleerror校验md5
1条回答
网友
1楼 · 发布于 2024-10-06 14:22:44
  • 您希望使用驱动器API检索文件的MD5校验和
  • 您已经能够使用驱动器API放置和获取文件。
    • 从您的脚本来看,似乎您正在使用driveapi v2
  • 您希望通过使用带有python的googleapi python客户端来实现这一点

如果我的理解是正确的,这个答案怎么样

使用驱动器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

在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

参考文献:

如果我误解了你的问题,而这不是你想要的结果,我道歉

相关问题 更多 >