Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
django使用JSON上传文件_Json_Django_File_Save - Fatal编程技术网

django使用JSON上传文件

django使用JSON上传文件,json,django,file,save,Json,Django,File,Save,我有这样的JSON请求: 对象:{“字段”:{“src”:http://dss.com/a.jpg“,“数据”:“//文件在这里”} 我有这样的模型: class FileMy(models.Model): f=models.FileField(上传到class='file\u path/',) 如何保存文件?您可以使用urllib读取文件,然后将其添加到模型中 请看这篇文章: 您可以将数据包装在一个从文件继承的文件中,然后将文件直接保存到模型中 from __future__ import u

我有这样的JSON请求:

对象:{“字段”:{“src”:http://dss.com/a.jpg“,“数据”:“//文件在这里”}

我有这样的模型:

class FileMy(models.Model):
f=models.FileField(上传到class='file\u path/',)


如何保存文件?

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

请看这篇文章:

您可以将数据包装在一个从文件继承的文件中,然后将文件直接保存到模型中

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)

首先,对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()
这是做什么的:

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

我认为这不是正确的方法,您需要在客户端提供一个表单,将文件发布到django视图,然后将文件保存到文件系统中。您可能不想在数据库中存储blob图像,而只想在文件系统中找到该文件的位置的引用。此链接可能有助于通过ajax将图像发布到django视图的上传表单。谢谢,我拆分了JSON和文件数据