使用 REST api 从 Google 驱动器下载图像
Download images from Google Drive using the REST api
我正在尝试使用 google 驱动器剩余 api 在浏览器中下载用户图像,但我似乎无法获取实际图像数据。我能够成功调用文件端点,但我不知道如何处理响应。
我的获取请求:
fetch(`https://www.googleapis.com/drive/v3/files/${fileId}?key=${driveInfo.key}`, settings)
.then(res => {
return res.json();
})
.then(json => {
console.log("drive json", json);
});
输出:
drive json
{
kind: "drive#file"
id: "1qXXBU6oIxs2Y4PZskA-kj6ljMjTfGKjf"
name: "Screenshot_20180919-160538.png"
mimeType: "image/png"
}
我还注意到 response.body
是一个很棒的 ReadableStream<Uint8Array>
,因为我最终需要一个 uint8 数组,但看起来 uint8 数组代表上述元数据而不是实际图像数据。
我是否以正确的方式进行此操作,或者我在尝试在客户端中下载图像时偏离了方向?
- 您想使用 Javascript 的
fetch
从 Google 驱动器使用 API 键下载文件。
- 文件已公开共享。
如果我的理解是正确的,这个答案怎么样?请将此视为几个可能的答案之一。
修改点:
- 要以二进制数据形式下载文件,请在查询参数中添加
alt=media
。
- 不使用
alt=media
时,返回文件元数据。
修改后的脚本:
fetch(`https://www.googleapis.com/drive/v3/files/${fileId}?key=${driveInfo.key}&alt=media`, settings)
.then(res => {
return res.arrayBuffer();
})
.then(data => {
console.log(data);
});
注:
- 文件未公开共享时,无法通过API键下载文件。请注意这一点。
- 在上面的脚本中,数据被检索为 arrayBuffer。
- 如果要以blob的形式获取数据,请将
return res.arrayBuffer();
修改为return res.blob();
参考文献:
如果我误解了你的问题,这不是你想要的结果,我深表歉意。
我正在尝试使用 google 驱动器剩余 api 在浏览器中下载用户图像,但我似乎无法获取实际图像数据。我能够成功调用文件端点,但我不知道如何处理响应。
我的获取请求:
fetch(`https://www.googleapis.com/drive/v3/files/${fileId}?key=${driveInfo.key}`, settings)
.then(res => {
return res.json();
})
.then(json => {
console.log("drive json", json);
});
输出:
drive json
{
kind: "drive#file"
id: "1qXXBU6oIxs2Y4PZskA-kj6ljMjTfGKjf"
name: "Screenshot_20180919-160538.png"
mimeType: "image/png"
}
我还注意到 response.body
是一个很棒的 ReadableStream<Uint8Array>
,因为我最终需要一个 uint8 数组,但看起来 uint8 数组代表上述元数据而不是实际图像数据。
我是否以正确的方式进行此操作,或者我在尝试在客户端中下载图像时偏离了方向?
- 您想使用 Javascript 的
fetch
从 Google 驱动器使用 API 键下载文件。 - 文件已公开共享。
如果我的理解是正确的,这个答案怎么样?请将此视为几个可能的答案之一。
修改点:
- 要以二进制数据形式下载文件,请在查询参数中添加
alt=media
。- 不使用
alt=media
时,返回文件元数据。
- 不使用
修改后的脚本:
fetch(`https://www.googleapis.com/drive/v3/files/${fileId}?key=${driveInfo.key}&alt=media`, settings)
.then(res => {
return res.arrayBuffer();
})
.then(data => {
console.log(data);
});
注:
- 文件未公开共享时,无法通过API键下载文件。请注意这一点。
- 在上面的脚本中,数据被检索为 arrayBuffer。
- 如果要以blob的形式获取数据,请将
return res.arrayBuffer();
修改为return res.blob();
- 如果要以blob的形式获取数据,请将
参考文献:
如果我误解了你的问题,这不是你想要的结果,我深表歉意。