我正在使用PyAMF将动态生成的大图像从Flex传输到Django.在Django方面,我收到encodedb64数据作为参数:
我的物品模型作为图像场.我无法做的是将数据保存为File Django Field.
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的File对象遗漏了一些属性,如模式,名称等.
我还认为使用StringIO会将图像数据完全加载到内存中,这很糟糕所以我可能会放弃AMF来处理这个特殊情况并使用POST.
你怎么看 ?
在django.core.files.base
你可以找到类ContentFile
.该类扩展了基本的Django File
类,因此您不需要StringIO(尽管ContentFile在内部使用).修改后的save方法如下所示:
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)