2012-05-06 126 views
3

我正在使用django-avatars來處理我的網站的用戶配置文件頭像。我目前正在爲該網站開發原生Android應用,其中包括用戶上傳頭像的功能。我通過基於64編碼的get參數傳遞圖像數據。在我的Django視圖中,我有通過base64上傳文件

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

解碼圖像。這工作正常(test.jpeg是我想要它的文件),但我很難將它綁在django-avatars中。

通過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 File對象時遇到了問題。我有http://dpaste.com/743542/,它會在avatar.avatar.save()行上產生此錯誤:http://dpaste.com/743541/ – numegil

+0

您需要指定數據的長度到StringIO對象的'size'屬性。 –

+0

工作很好,非常感謝! – numegil