【问题标题】:File handling in Django when posting image from service call从服务调用发布图像时 Django 中的文件处理
【发布时间】:2009-03-15 14:23:25
【问题描述】:

我正在使用PyAMF 将动态生成的大图像从 Flex 传输到 Django。 在 Django 端,我接收编码的 b64 数据作为参数:

我的项目模型作为图像域。 我有麻烦做的是将数据保存为文件 Django 字段。

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。

你怎么看?

【问题讨论】:

    标签: python django apache-flex pyamf


    【解决方案1】:

    django.core.files.base 中,您可以找到课程ContentFile。该类扩展了基本的 Django File 类,因此您不需要 StringIO(虽然 ContentFile 在内部使用)。修改后的保存方法如下:

    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)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-12-06
      • 2012-07-22
      • 2010-09-13
      • 2013-11-09
      • 1970-01-01
      相关资源
      最近更新 更多