gpt4 book ai didi

python - 使用python生成用于将文件上传到谷歌存储的预签名url

转载 作者:太空宇宙 更新时间:2023-11-03 23:56:53 25 4
gpt4 key购买 nike

我想使用 javascript ajax 功能将图像从前端上传到 google 存储。我需要一个服务器将生成的预签名 url,它将为我的前端提供身份验证以上传 blob。使用本地计算机时如何生成预签名 url。

以前对于 aws s3 我会这样做:

pp = s3.generate_presigned_post(
Bucket=settings.S3_BUCKET_NAME,
Key='folder1/' + file_name,
ExpiresIn=20 # seconds
)

当为用户生成一个签名的 url 以查看存储在谷歌存储中的文件时,我会这样做:

    bucket = settings.CLIENT.bucket(settings.BUCKET_NAME)
blob_name = 'folder/img1.jpg'
blob = bucket.blob(blob_name)
url = blob.generate_signed_url(
version='v4',
expiration=datetime.timedelta(minutes=1),
method='GET')

最佳答案

我花了 100 美元在谷歌支持和 2 周的时间终于找到了解决方案。

client = storage.Client() # works on app engine standard without any credentials requirements

但是如果你想使用 generate_signed_url() 函数,那么你需要服务帐户 Json key 。

每个应用引擎标准都有一个默认服务帐户。 (您可以在 IAM/服务帐户中找到它)。为该默认 sv 帐户创建一个 key ,并以 json 格式下载该 key (“sv_key.json”)。将该 key 存储在 app.yaml 文件旁边的 Django 项目中。然后执行以下操作:

from google.cloud import storage
CLIENT = storage.Client.from_service_account_json('sv_key.json')
bucket = CLIENT.bucket('bucket_name_1')
blob = bucket.blob('img1.jpg') # name of file to be saved/uploaded to storage
pp = blob.generate_signed_url(
version='v4',
expiration=datetime.timedelta(minutes=1),
method='POST')

这将适用于您的本地机器和 GAE 标准。当您将应用程序部署到 GAE 时,sv_key.json 也会与 Django 项目一起部署,因此它可以正常工作。

希望对你有帮助。

关于python - 使用python生成用于将文件上传到谷歌存储的预签名url,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57368894/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com