ConnectionClosedError при загрузке файла в Amazon S3 в Django - PullRequest
0 голосов
/ 23 октября 2018

Я использую boto3 и django-хранилища для загрузки файла в Amazon S3, но не могу заставить его работать, всегда возникает ошибка ConnectionClosedError, но когда я загружаю файл с помощью интерфейса администратора django,это работает, и я вижу файл, загруженный в мое ведро Amazon S3.Я пытался найти решение, но пока безуспешно, что может быть не так?

Вот мой HTML

<form method="post" action="{% url 'upload-document' %}" enctype="multipart/form-data">
            {% csrf_token %}
            <div class="form-row">
                <label for="description">Description</label>
                <input id="description"
                       type="text"
                       name="description"
                       value="{{ form_details.description }}"
                       required>
            </div>

            <input name="document_type" type="hidden" value="{{ document_type|cut:" " }}">
            <input name="document_type_id" type="hidden" value="{{ document_type_id }}">

            <div style="margin-top: 20px;" class="form-row">
                <label for="file">File</label>
                <input id="file"
                       accept=".pdf"
                       type="file"
                       name="document_file"
                       required>
            </div>

            <button style="margin-top: 20px; width: 100%;" class="button primary" type="submit">UPLOAD</button>
</form>

Просмотр кода, выполняющего загрузку

description = request.POST['description']
document_type = request.POST['document_type']
document_type_id = request.POST['document_type_id']
document = Document.objects.create(description=description,
                                   document_type=document_type)

document_file = request.FILES['document_file']
document.document_file = document_file

if document_type_id != 0:
     document.document_type_id = document_type_id

document.save()

и ниже - мой конфигурационный файл Amazon S3

AWS_ACCESS_KEY_ID = os.environ.get('AWS_ACCESS_KEY_ID')
AWS_SECRET_ACCESS_KEY = os.environ.get('AWS_SECRET_ACCESS_KEY')
AWS_PRELOAD_METADATA = True
AWS_QUERYSTRING_AUTH = False

DEFAULT_FILE_STORAGE = 'app.aws.utils.MediaRootS3BotoStorage' 
STATICFILES_STORAGE = 'app.aws.utils.StaticRootS3BotoStorage'
AWS_STORAGE_BUCKET_NAME = 'mybucketname'
S3DIRECT_REGION = 'eu-west-2'
S3_URL = '//%s.s3.amazonaws.com/' % AWS_STORAGE_BUCKET_NAME
MEDIA_URL = '//%s.s3.amazonaws.com/media/' % AWS_STORAGE_BUCKET_NAME
MEDIA_ROOT = MEDIA_URL
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...