通过base64上传文件

时间:2012-05-06 02:25:47

标签: python django base64

我正在使用django-avatars来处理我网站的用户个人资料头像。我目前正在为该网站开发一个原生的Android应用程序,其中包括用户上传头像的功能。我通过在base 64中编码的get参数传递图像数据。在我的Django视图中,我有

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

解码图像。这工作正常(test.jpeg是我希望它的文件),但我无法将其绑定到django-avatars。

通过django-avatars的来源,以下内容用于创建新的头像:

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

我的问题是,如何将我的文件数据转换为所需的request.FILES格式,(或者是重写save方法以接受我的格式的最简单方法)

1 个答案:

答案 0 :(得分:5)

request.FILES元素在包装器中是文件类似的。将文件数据粘贴到StringIO,将其传递给django.core.files.File构造函数,然后将 传递给save()