我正在使用Blueimp fileupload()将图像文件发布到django-tastypie API。
就文件上传而言,以下代码可以正常工作:
$("#image").fileupload({
dataType: 'json',
start: function() {
console.log("start fileupload");
},
progress: function(e, data) {
console.log(data.loaded + " " + data.total);
},
beforeSend: function(xhr, settings) {
xhr.setRequestHeader("X-CSRFToken", $.cookie('csrftoken'));
},
done: function(e, data) {
console.log("done uploading file.");
}
});
$("#image").bind('fileuploadfinished', function (e, data) {
console.log("fileuploadfinished");
});
但是,done
永远不会调用该回调。我尝试绑定,fileuploadfinished
并且也从未调用过。
start
和progress
都被称为预期。
beforeSend
是未记录的,但是django-tastypie需要使用SessionAuthentication
它-删除它不会改变它,done
并且fileuploadfinished
永远不会被调用。
事实证明,django-tastypie正确返回了201状态码。但是,文件上传不认为此状态代码成功。
此代码手动处理状态代码:
$("#image").fileupload({
dataType: 'json',
beforeSend: function(xhr, settings) {
xhr.setRequestHeader("X-CSRFToken", $.cookie('csrftoken'));
},
complete: function(xhr) {
if (xhr.readyState == 4) {
if (xhr.status == 201) {
console.log("Created");
}
} else {
console.log("NoGood");
}
},
});
这意味着该complete
回调被称为是成功还是失败,并且将readyState
和status
一起检查可以知道回调是否成功。
还有其他一些方法可以使它起作用,但是我认为这是最好的。详情请见:
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句