【问题标题】:Google Drive Upload Image - Data not returning webContentLink - Direct permenant linkGoogle 云端硬盘上传图片 - 数据未返回 webContentLink - 直接永久链接
【发布时间】:2023-04-08 02:04:01
【问题描述】:

我正在像这样成功地将图像上传到 API:

https://www.googleapis.com/upload/drive/v3/files?uploadType=multipart

Authorization: 'Bearer ' + token,
'Content-Type': 'multipart/form-data;  boundary="' + boundary + '"'
--data: multipartRequestBody

multipartRequestBody 在哪里:

{
    name: 'screenshot.png',
    mimeType: 'image/png',
    // parents: ['0B5IwavgVGMN9ekR2dEhuaUxkZTA'] // set this to the id of a the folder you want to upload it into
};

我是否可以向我的mulitpartRequestBody 提供一些密钥,告诉 GDrive 将其作为公开共享文件上传并返回 webContentLink?我可以在src<img src="..."> 中使用哪个,而对视图带宽没有限制?

我已经尝试设置writersCanShare: true,但它仍然不会返回webContentLink。我也尝试过添加type: 'anyone', role: 'reader',但这也没有用。

基本上我正在尝试做https://drive.google.com/uc?export=view&id={fileId} 所做的事情,但在insert 调用API 中。

谢谢

【问题讨论】:

  • webContentLink 可以在文件资源被检索后访问(即,使用get)。根据[文档](developers.google.com/drive/v3/web/…,一旦你指定它就不需要授权。insert 应该也可以拥有webContentLink,因为它也使用文件资源进行响应。还有其他下载文件的方法,但我认为这些不适合您的预期情况。
  • @adjuremods 感谢我体验过的输入,我必须先用files.insert 上传,然后用role=reader,type=anyone,withLink=true 为该ID 设置role=reader,type=anyone,withLink=true 的权限permissions.insert,然后我必须获取元数据带有files 的文件,请求字段webContentLink

标签: google-drive-api


【解决方案1】:

对您所有要求的简短回答是否定的。

云端硬盘并非旨在成为免费的公共托管服务,而是在人与人之间共享/查看/编辑内容。如果您确实尝试以“不限制视图带宽”的方式使用它,您将遇到带宽限制、滥用检测等问题。

另一个主要部分是您必须从 files.insert 调用中返回的 id 执行 files.get 请求 - 您将无法在仅插入的单个 API 调用中执行此操作。

使用Google Cloud Storage 会为您提供更好的服务,它的REST/JSON API 与您在云端硬盘中使用的类似。

【讨论】:

  • 感谢 Dan 提出关于谷歌云存储的想法!现在我像你说的那样连接了谷歌驱动器 - 我必须先用files.insert上传,然后用permissions.insert为那个ID设置role=reader,type=anyone,withLink=true的权限,然后我必须用files获取文件的元数据请求字段webContentLink。这听起来正确吗?我只知道它有效哈哈。带宽问题很糟糕,你知道它的限制吗?我也会添加谷歌云选项。 :) 编辑:啊谷歌云存储不是免费的吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-12-28
  • 1970-01-01
  • 2016-01-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多