gpt4 book ai didi

Django boto3 : save uploaded file on Amazon S3

转载 作者:行者123 更新时间:2023-12-04 19:58:07 25 4
gpt4 key购买 nike

我正在使用 boto3在 Django 项目中将文件上传到 Amazon S3。
settings.py :

...
AWS_ACCESS_KEY = 'xxxxxxxx'
AWS_SECRET_KEY = 'xxxxxxxx'
S3_BUCKET = 'xxxxx'
REGION_NAME = 'ap-southeast-1'

模板:
<form method=post action="..." enctype=multipart/form-data>
{% csrf_token %}
<input type="file" name="fileToUpload">
<input type=submit value=Upload>
</form>

看法:
from mysite.settings import AWS_ACCESS_KEY, AWS_SECRET_KEY, S3_BUCKET, REGION_NAME

import boto3
from boto3.session import Session

fileToUpload = request.FILES.get('fileToUpload')
session = Session(aws_access_key_id=AWS_ACCESS_KEY,
aws_secret_access_key=AWS_SECRET_KEY,
region_name=REGION_NAME)
s3 = session.resource('s3')
fpath = os.path.dirname(os.path.realpath(__file__)) + '/abc.png'
f = open(fpath, 'rb')
s3.Bucket(S3_BUCKET).put_object(Key='uploads/test2.png', Body=f)

对于现有文件 abc.png ,它已正确上传到 Amazon S3。但是,如何上传用户选择的文件 fileToUpload而不是现有文件 abc.png ?

最佳答案

以下工作:

def upload(request):
if request.method=='GET':
return render(request, '<someTemplate>')
# POST
fileToUpload = request.FILES.get('fileToUpload')
cloudFilename = '<someDirectory>/' + fileToUpload.name

session = boto3.session.Session(aws_access_key_id=AWS_ACCESS_KEY,
aws_secret_access_key=AWS_SECRET_KEY)
s3 = session.resource('s3')
s3.Bucket(AWS_BUCKET_NAME).put_object(Key=cloudFilename, Body=fileToUpload)

return redirect('<destinationTemplate>')

关于Django boto3 : save uploaded file on Amazon S3,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31275011/

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