django使用JSON上传文件

时间:2015-02-03 15:59:31

标签: json django file save

我有这样的JSON请求:

object: { "fields":{ "src" : "http://dss.com/a.jpg", "data" : " //file is here" } }

我有这样的模型:

class FileMy(models.Model): f = models.FileField(upload_to='file_path/',)

如何保存文件?

3 个答案:

答案 0 :(得分:0)

您可以使用urllib读取文件,然后将其添加到模型中。

看一下这篇文章: Django: add image in an ImageField from image url

答案 1 :(得分:0)

您可以将数据包装在继承自File的ContentFile中,然后将save文件直接包装到模型中。

from __future__ import unicode_literals
from django.core.files.base import ContentFile

from .models import FileMy

f1 = ContentFile("esta sentencia está en español")
f2 = ContentFile(b"these are bytes")
m1 = FileMy()
m2 = FileMy()
m1.f.save("filename", f1, save=True)
m2.f.save("filename", f2, save=True)

答案 2 :(得分:0)

首先对json请求体中的原始数据进行编码。

from tempfile import NamedTemporaryFile
from django.core.files import File

def save_file_to_field(field, file_name, raw_content):
    # field: reference to the model object instance field
    img_temp = NamedTemporaryFile(delete=True)
    img_temp.write(raw_content)
    field.save(
        file_name,
        File(img_temp)
    )
    img_temp.flush()

这是做什么的:

  • 在您的系统上创建一个临时文件来保存数据
  • 使用文件字段保存方法来触发通常的文件处理
  • 删除临时文件