405从谷歌驱动器下载文件时不允许使用方法



我正试图从谷歌驱动器下载一个文件,但我得到了一个不允许的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

注意:

  • 在上面的脚本中,文件是以二进制文件的形式下载的

参考文献:

  • 下载文件
  • 文件:获取
  • 文件:导出

最新更新