Google drive api Google Picker Api sizeBytes未定义

Google drive api Google Picker Api sizeBytes未定义,google-drive-api,google-picker,Google Drive Api,Google Picker,我们正在开发web应用程序和Google Drive之间的链接机制。我们向用户显示Google Picker,用户选择一个文件,我们通过$.post将所选文件链接到Picker回调中的数据。一切正常,我们能够在选择器回调中获取所选文件的id、名称、mimeType、url和大小字节 我们还希望我们的用户从Picker上传文件,除了一件事之外,它也可以正常工作。用户上传文件后,我们在Picker回调中成功获取data.docs对象,但这次“sizeBytes”字段未定义 我们是错过了什么还是做错了

我们正在开发web应用程序和Google Drive之间的链接机制。我们向用户显示Google Picker,用户选择一个文件,我们通过$.post将所选文件链接到Picker回调中的数据。一切正常,我们能够在选择器回调中获取所选文件的id、名称、mimeType、url和大小字节

我们还希望我们的用户从Picker上传文件,除了一件事之外,它也可以正常工作。用户上传文件后,我们在Picker回调中成功获取data.docs对象,但这次“sizeBytes”字段未定义

我们是错过了什么还是做错了什么?为什么上传到Picker api后“sizeBytes”字段未定义

这就是我们创建Google Picker的方式

var view = new google.picker.View(google.picker.ViewId.DOCS);
var picker = new google.picker.PickerBuilder()
.enableFeature(google.picker.Feature.MULTISELECT_ENABLED)
.setAppId(appId)
.setOAuthToken(oauthToken)            
.addView(view)
.addView(new google.picker.DocsUploadView())
.setLocale(pickerApiLocale)
.setMaxItems(5)
.setCallback(pickerCallback)
.build();
picker.setVisible(true);
编辑:

这就是我们获取回调数据的方式

function pickerCallback(data) {
    if (data.action == google.picker.Action.PICKED) {
        for (var i = 0; i < data.docs.length; i++) {
            var selectedDoc = data.docs[i];
            var params = {
                fileId: selectedDoc.id,
                fileName: selectedDoc.name,
                mimeType: selectedDoc.mimeType,
                webViewLink: selectedDoc.url,
                size: selectedDoc.sizeBytes,
            };
            $.post('myurl',params,function(){
              some code here....
            });
    }
  }
}
函数选择器回调(数据){
if(data.action==google.picker.action.PICKED){
对于(var i=0;i

如果用户上载文件,“sizeBytes”未定义。

我怀疑Picker没有在上载上指定
字段=*
。这意味着上载响应将仅为最小的文件属性。您需要执行一个
files.get(id)&fields=*


还要注意的是,任何谷歌文档(文档、电子表格等)都没有大小

我怀疑Picker没有在上传上指定
字段=*
。这意味着上载响应将仅为最小的文件属性。您需要执行一个
files.get(id)&fields=*


还要注意的是,任何谷歌文档(文档、电子表格等)都没有大小

这就是正在发生的事情。您正在从
data.doc[0]
对象访问“sizeBytes”(实际上是
fileSize
)属性,但其中没有此类属性。如果您使用console.log()访问该对象,则可以访问以下属性:

{id: "dfdsafdsafdsafdsafM", serviceId: "docs", mimeType: "image/png", name: "IMAGE.png", description: "", …}
description
downloadUrl
driveError
driveSuccess
iconUrl
id
isNew
lastEditedUtc
mimeType
name
serviceId
type
uploadId
uploadState
url

列表中没有大小字节(
fileSize
),因此您得到的是
未定义的
。如果要访问
fileSize
属性,需要使用中提到的。那份工作我的朋友,我将留给你。我已经完成了调试部分。

这就是正在发生的事情。您正在从
data.doc[0]
对象访问“sizeBytes”(实际上是
fileSize
)属性,但其中没有此类属性。如果您使用console.log()访问该对象,则可以访问以下属性:

{id: "dfdsafdsafdsafdsafM", serviceId: "docs", mimeType: "image/png", name: "IMAGE.png", description: "", …}
description
downloadUrl
driveError
driveSuccess
iconUrl
id
isNew
lastEditedUtc
mimeType
name
serviceId
type
uploadId
uploadState
url

列表中没有大小字节(
fileSize
),因此您得到的是
未定义的
。如果要访问
fileSize
属性,需要使用中提到的。那份工作我的朋友,我将留给你。我已经完成了调试部分。

如何获取“sizeByte”元数据?首先获取的是响应吗?@noogui我编辑了我的问题您如何获取“sizeByte”元数据?在第一个要获取的位置有响应吗?@noogui我编辑了我的问题谢谢noogui事实上我已经尝试了files.get,但上传后大小再次为空。如果我从Picker上传一个文件,关闭并重新打开它,然后选择上传的文件,那么我可以获得大小字节。但刚完成上传过程,我就没什么运气了。顺便说一句,如果我使用files.get获取Google Drive中已有的文件,它工作正常,我可以获取大小。我想@pinoyyid指出的是对的,问题的原因是从Picker Api上传文件…谢谢noogui实际上我已经尝试了文件。上传后立即获取,但大小再次为空。如果我从Picker上传一个文件,关闭并重新打开它,然后选择上传的文件,那么我可以获得大小字节。但刚完成上传过程,我就没什么运气了。顺便说一句,如果我使用files.get获取Google Drive中已有的文件,它工作正常,我可以获取大小。我猜@pinoyyid指出的是对的,问题的原因是从Picker Api上传文件。。。