如何从 Google 的日历 API 中直接 link 获取附件?
How do I get the direct link to an attached file from Google's Calendar API?
这是我从 Google 的日历 API 收到的部分数据:
{
"fileUrl":"https://drive.google.com/file/d/1q-cSkADjUnD0PGOamZKI44oIL_cXDJlg/view?usp=drive_web",
"title":"2.png",
"iconLink":"",
"fileId":"1q-cSkADjUnD0PGOamZKI44oIL_cXDJlg"
}
如何实现直接 link 到文件(使用 JavaScript)以便我可以将其用作数据源?示例:
https://something.com/2.png
编辑: This link(右键单击并复制图像地址)作为数据源,我只是不知道如何动态创建它。
您需要向 fileUrl
发出 GET 请求,因为永久 "direct" 链接将不存在。
直接来自these google docs:
Using alt=media
To download files, you make an authorized HTTP GET request to the file's resource URL and include the query parameter alt=media. For example:
GET
https://www.googleapis.com/drive/v3/files/0B9jNhSvVjoIVM3dKcGRKRmVIOVU?alt=media
URL 不需要文件扩展名来让他们的服务器理解您的请求。然而,有时服务器需要一个额外的查询参数来决定发回什么。
因此您似乎还需要将 ?alt=media
附加到端点 url、fileUrl
.
的末尾
然后只需使用ajax,或类似的请求方法,并向端点发送GET 请求。
使用驱动器 API 和 JS:
var fileId = '0BwwA4oUTeiV1UVNwOHItT0xfa2M';
var dest = fs.createWriteStream('/tmp/photo.jpg');
drive.files.get({
fileId: fileId,
alt: 'media'
})
.on('end', function () {
console.log('Done');
})
.on('error', function (err) {
console.log('Error during download', err);
})
.pipe(dest);
这是我从 Google 的日历 API 收到的部分数据:
{
"fileUrl":"https://drive.google.com/file/d/1q-cSkADjUnD0PGOamZKI44oIL_cXDJlg/view?usp=drive_web",
"title":"2.png",
"iconLink":"",
"fileId":"1q-cSkADjUnD0PGOamZKI44oIL_cXDJlg"
}
如何实现直接 link 到文件(使用 JavaScript)以便我可以将其用作数据源?示例:
https://something.com/2.png
编辑: This link(右键单击并复制图像地址)作为数据源,我只是不知道如何动态创建它。
您需要向 fileUrl
发出 GET 请求,因为永久 "direct" 链接将不存在。
直接来自these google docs:
Using alt=media To download files, you make an authorized HTTP GET request to the file's resource URL and include the query parameter alt=media. For example:
GET https://www.googleapis.com/drive/v3/files/0B9jNhSvVjoIVM3dKcGRKRmVIOVU?alt=media
URL 不需要文件扩展名来让他们的服务器理解您的请求。然而,有时服务器需要一个额外的查询参数来决定发回什么。
因此您似乎还需要将 ?alt=media
附加到端点 url、fileUrl
.
然后只需使用ajax,或类似的请求方法,并向端点发送GET 请求。
使用驱动器 API 和 JS:
var fileId = '0BwwA4oUTeiV1UVNwOHItT0xfa2M';
var dest = fs.createWriteStream('/tmp/photo.jpg');
drive.files.get({
fileId: fileId,
alt: 'media'
})
.on('end', function () {
console.log('Done');
})
.on('error', function (err) {
console.log('Error during download', err);
})
.pipe(dest);