gpt4 book ai didi

google-drive-api - 如何从 Google Drive API 按名称下载文件?

转载 作者:行者123 更新时间:2023-12-02 03:04:45 25 4
gpt4 key购买 nike

我正在尝试从 Google Drive API v3 下载文件。我必须通过按名称查找文件来执行此操作。

这是获取文件一般信息的请求 url:

https://www.googleapis.com/drive/v3/files?q=name+%3D+'fileName.json'

要下载文件,我必须使用参数 alt=media。它有效,但只有当我通过 id 找到这个文件时。我的意思是:

https://www.googleapis.com/drive/v3/files/3Gp-A4t6455kGGGIGX_gg63454354YD?alt=media

有人知道如何按名称下载文件吗?

https://www.googleapis.com/drive/v3/files?q=name+%3D+'fileName.json'

最佳答案

回答:

遗憾的是,无法使用 URL 本身中的文件名从 Google 云端硬盘下载文件。

推理:

如下图所示,Google Drive 支持多个同名文件。每个文件,而不是通过其名称来唯一标识,都有一个唯一的 ID,将其与其他文件区分开来。例如,由于可能存在三个同名文件,因此发出请求并仅引用文件名无法提供足够的信息来确定您要下载的文件

enter image description here

解决方法:

您仍然可以使用文件名来构建请求,但首先您需要向 Drive API 发出列表请求,以便您可以获得要下载的文件的特定文件 ID。

我假设您要下载的文件名为 fileName.json,如您的问题所示。

首先,您需要向服务器发出列表请求以获取初始文件名。您需要的范围是:

https://www.googleapis.com/auth/drive.readonly

请求本身就是您在问题中提出的。获得 token 后,您必须发出 GET 请求:

GET https://www.googleapis.com/drive/v3/files?q=name+%3D+'fileName.json'&key=[YOUR API KEY]

您必须在此处将 [YOUR API KEY] 替换为您的实际 API key 。您可以在 OAuth Playground 获得一个临时的。 .

从该请求中,您将获得一个 JSON 响应,其中包含您云端硬盘中具有所请求文件名的所有文件。这一点很重要 - 如果您只有一个文件具有此文件名,则无需担心,可以从这里继续。如果存在多个文件,则 JSON 响应将包含所有这些文件,因此需要在此处添加额外代码以检索您想要的文件。

继续 - 您收到的响应格式如下:

{
"incompleteSearch": false,
"files": [
{
"mimeType": "application/json",
"kind": "drive#file",
"id": "<your-file-ID>",
"name": "fileName.json"
}
],
"kind": "drive#fileList"
}

从这里开始,您可以开始构建您的 URL。

构建下载URL:

从 API 检索 JSON 响应后,您需要提取文件 ID 以放入 URL。以下示例是用 JavaScript/Google Apps Script 编写的,但可以用适合您需要的任何语言构建:

function buildTheUrl() {
var url = "https://www.googleapis.com/drive/v3/files";
var fileName = "fileName.json"
var apiKey = "your-api-key";
var parameters = "?q=name+%3D+'";

var requestUrl = url + parameters + fileName + "&key=" + apiKey;
var response = JSON.parse(UrlFetchApp.fetch(requestUrl).getContentText());

var fileId = response.files.id;
var downloadUrl = "https://www.googleapis.com/drive/v3/files/";
var urlParams = "?alt=media";

return downloadUrl + fileId + urlParams + "&key=" + apiKey;
}

这将返回一个字符串,它是文件的下载 URL。这是一个 Files: get 请求,然后可用于下载相关文件。

引用资料:

关于google-drive-api - 如何从 Google Drive API 按名称下载文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59293839/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com