2016-02-27 50 views
1

我成功上传到API的图像是这样的:谷歌驱动器上传图片 - 数据不返回webContentLink - 直接permenant链接

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。

感谢

+1

一旦Files资源被检索(即使用'get'),就可以访问webContentLink。根据[文档](https://developers.google.com/drive/v3/web/manage-downloads#viewing_files_in_a_browser),一旦您指定了它,就不需要授权。insert应该能够拥有'webContentLink',因为它也使用文件资源作为响应。还有其他方式可以下载文件,但我认为这些文件不适用于你想要的情况。 – adjuremods

+0

@adjuremods感谢我实验过的输入,并且我必须首先随后用'files.insert'写入,然后设置'role = reader的权限,type = anyone,withLink = true',用'permissions.insert'作为id,然后我必须用'files'请求领域'webContentLink' – Noitidart

回答

1

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

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

另一个主要部分是,您将不得不在files.insert调用中返回的ID请求files.get请求 - 您将无法在插入时在单个API调用中执行此操作。

使用Google Cloud Storage的效果会更好,它的REST/JSON API类似于您使用的驱动器。

+0

感谢Dan对Google云存储的想法!现在我迷上了google drive,就像你说的 - 我不得不先用'files.insert'上传,然后设置'role = reader的权限,类型=任何人,withLink = true'为具有'permissions.insert'的id,那么我必须抓取meta数据文件的'文件'与请求字段'webContentLink'。这听起来正确吗?它的作品就是我所知道的哈哈。带宽问题很糟糕,你知道这个限制吗?我还会添加google云选项。 :)编辑:啊谷歌云存储不是免费的吗? – Noitidart

相关问题