/ / Як завантажити файл з django (python) та s3? - python, django, завантаження файлів, amazon-s3

Як завантажити файл з django (python) і s3? - python, django, file-upload, amazon-s3

Я шукаю спосіб завантажити файл в s3. Я використовую django. Зараз я використовую бібліотеку python з Amazon для завантаження разом із наступним кодом:

Вид:

def submitpicture(request):
fuser = request.session["login"]

copied_data = request.POST.copy()
copied_data.update(request.FILES)
content_type = copied_data["file"].get("content-type")
ffile = copied_data["file"]["content"]
key = "%s-%s" % (fuser, "".join(copied_data["file"]["filename"].split(" ")))
site_s3.save_s3_data(key, ffile, content_type)

Шаблон:

<form action="/submitpicture/" method="POST">
<input type="file" id="file" name="file" />
<input type="submit" value="submit" />
</form>

Однак, коли я намагаюся запустити його, я отримую таку помилку:

"Key "file" not found in <QueryDict: {}>"
#MultiValueDictKeyError

Я дійсно не бачу, що я роблю неправильно. Чи може хтось вказати мені в правильному напрямку?

Редагувати: На всякий випадок, коли хтось задумається, я планую додати деяку перевірку після того, як я фактично завантажую роботу.

Відповіді:

18 за відповідь № 1

Вам потрібно буде надати атрибут enctype елементу FORM (мене це раніше покусало). Наприклад, ваш тег FORM повинен виглядати так:

<form action="/submitpicture/" method="POST" enctype="multipart/form-data" >

Без ентетипу ви опинитесь із порожнім запитом. ФАЙЛИ.


3 для відповіді № 2

Замість того, щоб робити це вручну, я би поглянув на бекенд пам’яті, який Девід Ларлет написав для Джанго, тут: http://code.larlet.fr/django-storages/


2 для відповіді № 3

Додавання enctype = "multipart / form-data" здається чимось, що варто згадати в розділі "Завантаження файлів" в документах django (http://docs.djangoproject.com/en/dev/topics/http/file-uploads/). Думки?