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
}
对于自带谷歌文档(谷歌电子表格,演示等),我们不;吨提供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"
}
好的,那就是我认为使用的是exportLinks。但是,您能否指出我正确访问这些链接的方向?我一直得到一个没有找到的(405)方法......我尝试使用api文档中描述的CORS请求方法。我很困惑。对不起,如果我错过了明显的东西... – JoshuaMorine 2012-07-23 06:22:06
但是,根据这些信息和我的挖掘显示,访问exportLinks不是我想要的。我其实想要访问Google文档和电子表格。所以现在我只需要弄清楚如何在js中使用Docs API。或者,这可能吗? – JoshuaMorine 2012-07-23 07:39:04
@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请求抓取文件都很容易。
Google文档不存在下载链接,例如电子表格或文档 - 只会显示已上传到驱动器的文件。 – 2014-11-27 00:50:05
您还可以粘贴响应的内容,以便我们可以看一看吗?请确保删除任何私人数据。仅供参考,只有具有存储在Drive(图片,pdf等)中的内容的文件才会有downloadUrl。 – Alain 2012-07-18 16:11:59
哇。谢谢阿兰。我只是上传了一个.png到驱动器来检查你说的是什么,果然有一个downloadUrl。那么,人们应该如何从文本文件和其他文件中获取内容?我将在几分钟后发布我收到的响应对象... – JoshuaMorine 2012-07-19 06:58:36
从您发布的元数据中,您试图获取Google文档的内容。这是不可能的(因为内容是以私有格式存储的),但是您可以使用各种exportLinks以您的应用程序能够理解的格式导出。 – Alain 2012-07-19 17:36:16