Уведомления

Группа в Telegram: @pythonsu

#1 Сен. 4, 2011 16:23:38

Mutagena
От:
Зарегистрирован: 2009-10-18
Сообщения: 295
Репутация: +  0  -
Профиль   Отправить e-mail  

ajax-upload через темповые файлы

Привет.
Необходимо реализовать мульти-загрузку файлов.
Решил использовать valums / file-uploader. https://github.com/valums/file-uploader
Необходимо реализовать два бекенда. Для браузеров, поддерживающих мульти-загрузку и для остальных.

Если request.raw_post_data записать в темповый файл таким образом:

from django.core.files.temp import NamedTemporaryFile
with NamedTemporaryFile(suffix='.upload', dir=settings.FILE_UPLOAD_TEMP_DIR) as f:
f.write(request.raw_post_data)
Каким образом теперь темповый файл обернуть в django.core.files.base.File, чтобы можно было инстанцировать и сохранить модель? Дело в том, что в поле модели указан storage, который должен правильно сохранить файл.

Может быть кто-нибудь уже решал подобную задачу?



Офлайн

#2 Сен. 5, 2011 13:50:40

ziro
От:
Зарегистрирован: 2009-08-13
Сообщения: 225
Репутация: +  8  -
Профиль   Отправить e-mail  

ajax-upload через темповые файлы

Попробуйте метод save для поля модели типа FileField. Что то похожее есть в документации - https://docs.djangoproject.com/en/dev/ref/models/fields/#django.db.models.FieldFile.save
типа такого:

from django.core.files.base import ContentFile

def save_view(request, ...):
my_model.my_file_field.save('my-file-name.ext', ContentFile(request.raw_post_data))
То есть возможно Вам NamedTemporaryFile не понадобится. Ну или можете потом считать содержимое полученного NamedTemporaryFile в ContentFile.



Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version