Python 从服务调用发布图像时在Django中的文件处理
我正在使用将动态生成的大图像从Flex传输到Django。 在Django端,我接收EncodedDB64数据作为参数: 我的项目模型作为一个imagefield。 我很难将数据保存为File Django字段Python 从服务调用发布图像时在Django中的文件处理,python,django,apache-flex,pyamf,Python,Django,Apache Flex,Pyamf,我正在使用将动态生成的大图像从Flex传输到Django。 在Django端,我接收EncodedDB64数据作为参数: 我的项目模型作为一个imagefield。 我很难将数据保存为File Django字段 def save_item(request, uname, data): """ Save a new item """ item = Item() img = cStringIO.StringIO() img.write(base64.b64d
def save_item(request, uname, data):
""" Save a new item """
item = Item()
img = cStringIO.StringIO()
img.write(base64.b64decode(data))
myFile = File(img)
item.preview.save('fakename.jpg', myFile, save=False)
这将不起作用,因为StringIO中的文件对象缺少一些属性,例如模式、名称等
我还认为使用StringIO会将图像数据完全加载到内存中,这是不好的,因此我可能会放弃使用AMF来处理这种特殊情况,而使用POST
您觉得怎么样?在
django.core.files.base
中可以找到类ContentFile
。该类扩展了基本的Django文件
类,因此您不需要StringIO(ContentFile内部使用StringIO)。修改后的保存方法如下所示:
from django.core.files.base import ContentFile
def save_item(request, uname, data):
item = Item()
myFile = ContentFile(base64.b64decode(data))
item.preview.save('fakename.jpg', myFile, save=False)