2011-05-23 48 views
4

我正在使用django和backbone.js创建一个Web应用程序。问题是我需要上传文件到服务器。我如何链接骨干模型和文件?因此,当我执行model.save()时,文件被上传到服务器。Backbone.js将文件链接到模型

编辑:只是为了澄清事情。我想要做的是我想链接一个输入文件框与骨干模型。所以当用户从他/她的计算机中选择一个文件时,我应该能够将该文件与骨干模型链接起来。当我在主干脚本中调用model.save()时,它应该将该文件与模型的其余部分一起发送。

+0

backbone.js中的模型使用Ajax调用将资源属性发送到服务器。这些属性被转换为参数以通过线路发送。我不确定你问的是否是现实的期望。 – 2011-05-28 01:55:09

+2

我认为你提到django会让这个问题的答案者感到困惑。问题完全在backbone.js内,而服务器端则无关紧要。我有完全相同的问题,但我的服务器端恰好是PHP。这家伙有同样的问题,但他使用的Rails:http://stackoverflow.com/questions/6500379/file-upload-with-backbone – rjmunro 2011-09-05 14:53:02

回答

0

基本上,Web浏览器决定何时上传文件,而不是服务器。服务器可能会在request.FILES中接收文件。然后,您可以在浏览器提交文件后处理model.save()。有关更多信息,您应该看到Django的非常好的文档站点:http://docs.djangoproject.com/en/dev/topics/http/file-uploads/?from=olddocs

backbone.js中的模型提供了使用模型来处理数据的方法。如上所述,BUG Django有自己的接收文件的功能。

+0

我知道djnago提供了一个上传文件并保存它们的机制,谢谢你的。但我的问题是我如何链接,可以说,一个输入文件标签到骨干模型。因此,当我在backbone中调用model.save时,它会将文件发送到服务器。 – satran 2011-05-23 04:40:03

0

问题是你不能直接使用AJAX文件上传。 常见的解决方法是将表单提交给隐藏的iframe。可以使用jQuery Form插件。它提供了ajaxSubmit方法,它像jQuery.ajax调用一样工作,但使用隐藏的iframe,因此它可以上传文件。

而且你需要重写Backbone.sync或每个型号都有所覆盖同步和替换$ $就调用(someForm).ajaxSubmit调用

在服务器,你应该返回JSON字符串ID参数和包含文件url的文件参数