2012-05-06 7 views
3

Я использую django-аватары для обработки аватаров профиля пользователя для моего сайта. В настоящее время я разрабатываю собственное приложение для Android, которое включает в себя возможность загрузки аватаром. Я передаю данные изображения с помощью параметра GET, закодированной в базе 64. На мой взгляд Django, у меня естьЗагрузка файла через base64

data = base64.b64decode(request.POST['data'])  
out = open("etc/test.jpeg", "wb") 
out.write(data) 
out.close() 

для декодирования изображения. Это нормально работает (test.jpeg - это файл, который я хочу, чтобы он был), но у меня проблемы с привязкой к django-аватарам.

Глядя через источник Джанго-аватаров, используется для создания нового аватара следующее:

avatar = Avatar(
    user = request.user, 
    primary = True, 
) 
image_file = request.FILES['avatar'] 
avatar.avatar.save(image_file.name, image_file) 
avatar.save() 

Мой вопрос, как я могу конвертировать мои данные файла в нужный формат request.FILES (или самый простой способ переписать метод сохранения, чтобы принять мой формат)

ответ

5

request.FILES Элементы являются файловыми в обертке. Вставьте данные файла в StringIO, передайте его на конструктор django.core.files.File, затем передайте , что - save().

+0

У меня возникли проблемы с созданием объекта файла django. У меня есть http://dpaste.com/743542/, который выдает эту ошибку на странице аватара.avatar.save(): http://dpaste.com/743541/ – numegil

+0

Вам нужно будет указать длину данных к атрибуту 'size' объекта StringIO. –

+0

отлично работает, спасибо! – numegil

Смежные вопросы