我无法弄清楚如何使用tastypie,backbone和knockout进行文件/图片上传
[knockout]我不确定数据绑定在输入上是什么,以便我可以上传文件:
// what I have right now
<input type="file" data-bind="value: image"/>
[backbone]我有post url set但是给出了上面的设置,我的文件只是一个字符串
imageModel.get("image") //gives me a string like C:/image
[tastypie]保存上述模型时,不会上传任何文件,FileField只是一个字符串。它甚至没有通过正常的upload_to = ... django dynamics
# in my tastypie resource
class ImageResource(ModelResource):
image = fields.FileField(attribute="image")
# ...
我知道这个问题有很多部分,所以如果一个解决方案解决了所有问题,我会感到非常惊讶。但是,任何人都可以指出我正确的方向,特别是tastypie的骨干(只发送文本)和tastypie到db(不使用upload_to,没有文件保存)问题?
答案 0 :(得分:0)
值绑定只会在文本中提供文件名,如果你需要实际的文件对象需要自定义绑定,我为我的项目做了一个,然后使用FileReader html5 objec将文件流式传输到服务器
ko.bindingHandlers.file = {
init: function (element, valueAccessor, allBindingsAccessor) {
ko.utils.registerEventHandler(element, "change", function () {
writeValueToProperty(valueAccessor(), allBindingsAccessor, "file", element.files[0]);
});
},
update: function (element, valueAccessor) {
if (ko.utils.unwrapObservable(valueAccessor()) == null) {
element.value = "";
}
}
};