我正在使用django和backbone.js创建一个Web应用程序。问题是我需要将文件上传到服务器。如何将骨干模型与文件链接?因此,当我执行model.save()时,文件将上传到服务器。
编辑:只是为了清楚。我想要做的是我想将输入文件框与骨干模型链接起来。因此,当用户从他/她的计算机中选择文件时,我应该能够将该文件与骨干模型链接起来。当我在主干脚本中调用model.save()时,它应该将文件与模型的其余部分一起发送。
答案 0 :(得分:0)
基本上,Web浏览器决定何时上传文件,而不是服务器。服务器可以在request.FILES中接收文件。然后,您可以在浏览器提交文件后处理model.save()。有关更多信息,您应该看到Django非常好的文档站点:http://docs.djangoproject.com/en/dev/topics/http/file-uploads/?from=olddocs
backbone.js中的模型提供了使用模型处理数据的方法。 BUt Django有自己的接收文件的工具,如上所述。
答案 1 :(得分:0)
问题是您不能直接使用AJAX文件上传。 常见的解决方法是将表单提交给隐藏的iframe。
您可以使用jQuery Form插件。它提供了ajaxSubmit方法,它的工作方式类似于jQuery.ajax,但使用了隐藏的iframe,因此它可以上传文件。
此外,您需要在每个模型的基础上覆盖Backbone.sync或覆盖同步,并将$ .ajax调用替换为$(someForm).ajaxSubmit call
在服务器上,您应该返回带有id参数的JSON字符串和包含文件url的文件参数