如何直接上传文件到s3 django

pwuypxnk  于 2022-12-01  发布在  Go
关注(0)|答案(1)|浏览(148)

我创建了一个表单字段,并使用它上传文件。我希望这些文件直接上传到s3,而不保存在本地。下面是代码

class UploadFileForm(forms.Form):
    file = forms.FileField()

if request.method == 'POST':
    form = UploadFileForm(request.POST, request.FILES)
    if form.is_valid():
        print('file upload',request.FILES['file']) 
        s3 = boto3.client('s3')

现在我如何通过s3上传request.FILES['file']
我不想使用djangostorages,因为我已经在另一个桶和任务中使用了。

4nkexdtk

4nkexdtk1#

我不知道你的错误消息,但以下步骤可能工作...
1.导入boto3
1.初始化S3对象
1.指定区域和存储桶
1.从表单中获取上传的文件
1.将带有主体和密钥的对象放入S3(文件名)

import boto3
...
data = form.cleaned_data
if data['file'] != None:
    s3 = boto3.resource('s3', region_name='your region name')
    bucket = s3.Bucket('your bucket name')
    bucket.put_object(Body=data['file'], Key=data['file'].name)
...

如果不起作用,请检查与错误消息相关的AWS S3设置(凭据、IAM角色、默认区域、存储桶策略和其他设置)。

相关问题