google-api-javascript-client:如何使用Drive API获取文件的内容?

问题描述:

首先,如果有问题/答案已经解决了我的问题,我诚恳地为创建一个新的道歉。然而,我一直在寻找3天,并没有找到答案...google-api-javascript-client:如何使用Drive API获取文件的内容?

我的问题是,我不能为我的生活弄清楚如何拉一个文件(任何文件)的内容。从阅读文档后,我发现我返回的文件资源对象应该有一个名为“downloadUrl”的属性,从这里我应该可以访问文件内容。

没有返回给我的文件资源对象(通过gapi.client.request)具有此字段/属性。以下是我用来获取文件的功能。 有人可以帮助指向正确的方向吗?我必须有这个演示在星期一做,我一直停留在这2天....

这里是我的get函数代码:

Client.getFileContent = function getFileContent() { 
    gapi.client.load('drive', 'v2', function() { 
      var request = gapi.client.request({ 
       path : '/drive/v2/files/1QmaofXyVqnw6ODXHE5KWlUTcWbA9KkLyb-lBdh_FLUs', 
       method : 'GET', 
       params : { 
        projection: "FULL" 
       } 
      }); 
      request.execute(function(response) { 
       console.log(response); 
      }); 
    }); 
}; 

文件资源对象,返回给我的没有downloadUrl属性。

按照要求,这里是我回来的文本文件的响应对象。请注意,我用“fileid”替换了一些id,以便在此发布。

"kind": "drive#file", 
    "id": "fileID", 
    "etag": "\"-tJAWr_lbRQU2o8gZ0X7BCBIlVk/MTM0MjYyODQ1MTQ2Nw\"", 
    "selfLink": "https://www.googleapis.com/drive/v2/files/fileID", 
    "alternateLink": "https://docs.google.com/document/d/fileID/edit", 
    "embedLink": "https://docs.google.com/document/d/fileID/preview", 
    "thumbnailLink": "https://docs.google.com/feeds/vt?gd=true&id=fileID&v=1&s=AMedNnoAAAAAUAfLhbYIDsNIn40k7DfRYBsrquijmCii&sz=s220", 
    "permissionsLink": "https://www.googleapis.com/drive/v2/files/fileID/permissions", 
    "title": "Copied filed.txt", 
    "mimeType": "application/vnd.google-apps.document", 
    "labels": { 
    "starred": false, 
    "hidden": false, 
    "trashed": false, 
    "restricted": false, 
    "viewed": true 
    }, 
    "createdDate": "2012-07-18T16:20:51.132Z", 
    "modifiedDate": "2012-07-18T16:20:51.467Z", 
    "modifiedByMeDate": "2012-07-18T16:20:51.467Z", 
    "lastViewedByMeDate": "2012-07-18T16:20:51.467Z", 
    "parents": [ 
    { 
    "kind": "drive#parentReference", 
    "id": "0AAAYYkwdgVqHUk9PVA", 
    "selfLink": "https://www.googleapis.com/drive/v2/files/fileID/parents/0AAAYYkwdgVqHUk9PVA", 
    "parentLink": "https://www.googleapis.com/drive/v2/files/0AAAYYkwdgVqHUk9PVA", 
    "isRoot": true 
    } 
    ], 
    "exportLinks": { 
    "application/vnd.oasis.opendocument.text": "https://docs.google.com/feeds/download/documents/export/Export?id=fileID&exportFormat=odt", 
    "application/msword": "https://docs.google.com/feeds/download/documents/export/Export?id=fileID&exportFormat=doc", 
    "text/html": "https://docs.google.com/feeds/download/documents/export/Export?id=fileID&exportFormat=html", 
    "application/rtf": "https://docs.google.com/feeds/download/documents/export/Export?id=fileID&exportFormat=rtf", 
    "text/plain": "https://docs.google.com/feeds/download/documents/export/Export?id=fileID&exportFormat=txt", 
    "application/pdf": "https://docs.google.com/feeds/download/documents/export/Export?id=fileID&exportFormat=pdf" 
    }, 
    "userPermission": { 
    "kind": "drive#permission", 
    "etag": "\"-tJAWr_lbRQU2o8gZ0X7BCBIlVk/9STkNeCmz61YXorH3hoJimnEgfM\"", 
    "id": "current", 
    "role": "owner", 
    "type": "user" 
    }, 
    "quotaBytesUsed": "0", 
    "ownerNames": [ 
    "Joshua.morine" 
    ], 
    "lastModifyingUserName": "Joshua.morine", 
    "editable": true, 
    "writersCanShare": true 
    } 
+0

您还可以粘贴响应的内容,以便我们可以看一看吗?请确保删除任何私人数据。仅供参考,只有具有存储在Drive(图片,pdf等)中的内容的文件才会有downloadUrl。 – Alain 2012-07-18 16:11:59

+0

哇。谢谢阿兰。我只是上传了一个.png到驱动器来检查你说的是什么,果然有一个downloadUrl。那么,人们应该如何从文本文件和其他文件中获取内容?我将在几分钟后发布我收到的响应对象... – JoshuaMorine 2012-07-19 06:58:36

+0

从您发布的元数据中,您试图获取Google文档的内容。这是不可能的(因为内容是以私有格式存储的),但是您可以使用各种exportLinks以您的应用程序能够理解的格式导出。 – Alain 2012-07-19 17:36:16

对于自带谷歌文档(谷歌电子表格,演示等),我们不;吨提供downloadUrl因为这些不能真正被下载在他们的原始格式文件。相反,您必须使用exportLinks列表中的其中一个网址,该网址提供了以几种不同的导出格式下载Google文档的网址。

在你的情况下,谷歌文档可以使用下列:

"exportLinks": { 
    "application/vnd.oasis.opendocument.text": "https://docs.google.com/feeds/download/documents/export/Export?id=fileID&exportFormat=odt", 
    "application/msword": "https://docs.google.com/feeds/download/documents/export/Export?id=fileID&exportFormat=doc", 
    "text/html": "https://docs.google.com/feeds/download/documents/export/Export?id=fileID&exportFormat=html", 
    "application/rtf": "https://docs.google.com/feeds/download/documents/export/Export?id=fileID&exportFormat=rtf", 
    "text/plain": "https://docs.google.com/feeds/download/documents/export/Export?id=fileID&exportFormat=txt", 
    "application/pdf": "https://docs.google.com/feeds/download/documents/export/Export?id=fileID&exportFormat=pdf" 
    } 
+0

好的,那就是我认为使用的是exportLinks。但是,您能否指出我正确访问这些链接的方向?我一直得到一个没有找到的(405)方法......我尝试使用api文档中描述的CORS请求方法。我很困惑。对不起,如果我错过了明显的东西... – JoshuaMorine 2012-07-23 06:22:06

+0

但是,根据这些信息和我的挖掘显示,访问exportLinks不是我想要的。我其实想要访问Google文档和电子表格。所以现在我只需要弄清楚如何在js中使用Docs API。或者,这可能吗? – JoshuaMorine 2012-07-23 07:39:04

+0

@JoshuaMorine你可以看看这个问题:http:// *。com/questions/11578020/how-to-programmatically-manipulation-native-google-doc-files/11588814#comment15371184_11588814并且让我知道这是否会回答它。 – Nivco 2012-07-23 18:13:33

你正在寻找的元数据功能居然是:

request = gapi.client.drive.files.get({ 
    'fileId': fileId 
}); 

这其中产生的结果与downloadUrl,你指的是。然后使用任何HTTP请求抓取文件都很容易。

+1

Google文档不存在下载链接,例如电子表格或文档 - 只会显示已上传到驱动器的文件。 – 2014-11-27 00:50:05