Как загрузить файл непосредственно на s3 django

Я создаю поле формы и загружаю файл с его помощью. Я хочу, чтобы эти файлы загружались непосредственно на 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')

теперь как я могу загрузить request.FILES['file'] через s3

Я не хочу использовать djangostorages, потому что я уже использую его для другого ведра и задачи

Я не знаю, что у вас за сообщение об ошибке, но следующие шаги могут сработать...

  1. import boto3
  2. initialize S3 object
  3. укажите регион и ведро
  4. получите загруженный файл из формы
  5. поместить объект в 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, регион по умолчанию, политики ведра и другие настройки).

Вернуться на верх