从Google Drive Api(Python)获取文件大小

6
我正在尝试找出如何检索上传到Google Drive的文件的文件大小。 根据文档,这应该在文件元数据中...但是当我请求它时,文件大小根本不在元数据中。
file = self.drive_service.files().get(fileId=file_id).execute()
print(file)

>>> {u'mimeType': u'application/x-zip', u'kind': u'drive#file', u'id': u'0B3JGbAfem1CrWnhtWq5qYlkzSXf', u'name': u'myfile.ipa'}

我在这里漏掉了什么?我怎样才能检查文件大小呢?

3个回答

13

默认情况下,仅包含少量选择性属性在元数据中。

要请求特定属性,请使用fields参数:

file = self.drive_service.files().get(fileId=file_id, fields='size,modifiedTime').execute()

这将查询文件的大小和修改时间。

顺便说一下,您发布的链接是指旧的v2 API。您可以在当前的v3 API 这里找到所有文件属性的列表。


3
请注意:您也可以添加 fields='*' 以返回所有内容。 - Linda Lawton - DaImTo
请注意,即使 fields='*',对于 Google 文档或快捷方式文件,有些字段也不会填充,例如大小、MD5 校验和等。 - Abdul Rauf

2
您在此处缺少“fields”特殊查询参数。它用于为Google APIs提供部分响应。部分响应主要用于提高API调用性能。
在新引入的v3 API中有一个小变化,文件列表API的响应会默认返回一些属性,而不像v2 API默认返回所有属性。
虽然,如果您想要响应中的所有属性,请将“fields = *”作为查询传递。
希望这可以帮助您!

0

fields中传递'size'应该可以工作。

例如:fields='size'

但是,如果文件是Google Drive本地文件,例如在Google Docs或Sheets中创建的文件,则这些文件不会占用您的配额空间,因此没有大小。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接