hen*_*oem 1 file-upload blueimp jquery-file-upload
我正在使用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");
});
Run Code Online (Sandbox Code Playgroud)
但是,done永远不会调用回调.我尝试绑定fileuploadfinished,也从未调用过.
start并且progress都按预期调用.
beforeSend没有文档,但django-tastypie需要SessionAuthentication- 删除它不会改变它done,fileuploadfinished也永远不会被调用.
事实证明,django-tastypie正确返回201状态代码.但是,fileupload不会将此状态代码视为成功.
此代码手动处理状态代码:
$("#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");
}
},
});
Run Code Online (Sandbox Code Playgroud)
这意味着,complete回调被调用是成功还是失败,并且检查readyState和status一起可以判断它是否成功.
还有其他一些方法可以让它发挥作用,但我认为这是最好的.更多细节在这里:
| 归档时间: |
|
| 查看次数: |
3689 次 |
| 最近记录: |