繁体   English   中英

使用api从谷歌云存储下载文件

[英]download a file from google cloud storage with the api

我目前使用gsutil cp从我的存储桶下载文件,但这需要你安装一堆东西。

我只想使用简单的API请求下载它,例如:

http://storage.googleapis.com/mybucket/pulltest/pulltest.csv

这让我拒绝访问。 如何格式化auth参数来绕过这个?

如果您的对象可以由匿名用户下载,则可以下载与此完全相同的对象。

但是,手工操作OAuth很棘手。 您需要向Google呈现的内容是访问令牌。 auth标头如下所示:

# This has gotta be in an HTTPS request. No sending credentials over HTTP, please.
Authorization: Bearer something.abcdabcdabcdabcdabcdabcdabcdabcd

获取访问令牌需要进行OAuth交换,这有点棘手。 有一个在线游乐场可以为您处理: https//developers.google.com/oauthplayground/

还有一些关于确切细节的文档,尽管您可能不想手动执行: https//developers.google.com/identity/protocols/OAuth2

访问令牌只有几分钟。 它们并不意味着坚持下去。 如果你要做很多事情,你可能想要安装gcloud SDK,它有一个非常有用的“ print-access-token ”命令。

弄清楚如何做我想要的:

from google.cloud.storage.client import Client
from google.cloud.storage.bucket import Bucket
from google.cloud.storage.blob import Blob
from google.oauth2.service_account import Credentials

credentials = Credentials.from_service_account_file('key.json')
client = Client(project='project', credentials=credentials)
bucket = Bucket(client=client, name='bucket')
blob = Blob(name='pulltest/pulltest.csv', bucket=bucket)

print blob.exists()

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM