当前位置:  开发笔记 > 编程语言 > 正文

从服务调用发布图像时Django中的文件处理

如何解决《从服务调用发布图像时Django中的文件处理》经验,为你挑选了1个好方法。

我正在使用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.

你怎么看 ?



1> Guðmundur H..:

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)

推荐阅读
重庆制造漫画社
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有