我正试图从谷歌驱动器下载一个文件,但我得到了一个不允许的405方法我有一个有效的令牌,我可以上传一个文件,但使用上传的fileId下载它是不起作用的。我做错了什么?
var xhr = new XMLHttpRequest();
xhr.open('GET', 'https://www.googleapis.com/upload/drive/v3/files/'+fileId);
xhr.setRequestHeader('Authorization', 'Bearer ' + token);
xhr.onload = () => {
console.log(JSON.stringify(xhr.response,true,4));
};
xhr.send();
我相信你的目标和情况如下。
- 您想从Google Drive下载一个文件
- 您的访问令牌可用于使用驱动器API从Google Drive下载文件
为此,我想提出以下修改。
修改要点:
- 我认为在您的脚本中,
'https://www.googleapis.com/upload/drive/v3/files/'+fileId
的端点不能用于从Google Drive下载文件 - 在Google Drive API,下载文件的方法在Google Docs和其他文件中有所不同。谷歌文档文件包括谷歌文档、谷歌电子表格、谷歌幻灯片等
根据您的问题,我无法理解您想要下载的文件类型。因此,在这个答案中,我想提出以下两种模式。
模式1:
当fileId
不是谷歌文档文件时,您可以使用以下脚本。使用文件:获取驱动器API的方法。在这种情况下,如果文件ID的文件是文本文件,则可以在控制台中看到文件内容。
修改的脚本:
var xhr = new XMLHttpRequest();
xhr.open('GET', 'https://www.googleapis.com/drive/v3/files/' + fileId + '?alt=media');
xhr.setRequestHeader('Authorization', 'Bearer ' + token);
xhr.onload = () => {
console.log(JSON.stringify(xhr.response,true,4));
};
xhr.send();
模式2:
当fileId
是谷歌文档文件,即谷歌文档、谷歌电子表格、谷歌幻灯片等时,您可以使用以下脚本。使用驱动器API中的文件:导出的方法。
修改的脚本:
var xhr = new XMLHttpRequest();
xhr.open('GET', 'https://www.googleapis.com/drive/v3/files/' + fileId + '/export?mimeType=application%2Fpdf');
xhr.setRequestHeader('Authorization', 'Bearer ' + token);
xhr.onload = () => {
console.log(JSON.stringify(xhr.response,true,4));
};
xhr.send();
- 在这种情况下,Google文档文件以PDF格式下载。当您想将文件下载为其他mimeType时,请设置mimeType
注意:
- 在上面的脚本中,文件是以二进制文件的形式下载的
参考文献:
- 下载文件
- 文件:获取
- 文件:导出