gpt4 book ai didi

django-models - 使用 Boto3 上传到 Amazon S3 并返回公共(public) url

转载 作者:行者123 更新时间:2023-12-03 10:47:20 33 4
gpt4 key购买 nike

我正在尝试使用 Boto3 将文件上传到 s3 并将上传的文件公开并将其作为 url 返回。

class UtilResource(BaseZMPResource):
class Meta(BaseZMPResource.Meta):
queryset = Configuration.objects.none()
resource_name = 'util_resource'
allowed_methods = ['get']

def post_list(self, request, **kwargs):

fileToUpload = request.FILES
# write code to upload to amazone s3
# see: https://boto3.readthedocs.org/en/latest/reference/services/s3.html


self.session = Session(aws_access_key_id=settings.AWS_KEY_ID,
aws_secret_access_key=settings.AWS_ACCESS_KEY,
region_name=settings.AWS_REGION)

client = self.session.client('s3')
client.upload_file('zango-static','fileToUpload')


url = "some/test/url"
return self.create_response(request, {
'url': url // return's public url of uploaded file
})

我搜索了整个文档,但找不到任何描述如何执行此操作的链接,有人可以解释或提供任何可以找到灵魂的资源吗?

最佳答案

我也有同样的情况。
除了 generate_presigned_url 之外,在 Boto3 文档中找不到任何东西,这不是我需要的,因为我有公共(public)可读的 S3 对象。

我想出的最好的是:

bucket_location = boto3.client('s3').get_bucket_location(Bucket=s3_bucket_name)
object_url = "https://s3-{0}.amazonaws.com/{1}/{2}".format(
bucket_location['LocationConstraint'],
s3_bucket_name,
key_name)

您可以尝试在 boto3 github issues list 上发帖。以获得更好的解决方案。

关于django-models - 使用 Boto3 上传到 Amazon S3 并返回公共(public) url,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33809592/

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