用户使用ajax调用上传多个文件时单击“取消”时如何获取上传文件的状态。
这样我调用ajax请求来上传文件:
var request = $.ajax({
url: 'files.php',
type: 'POST',
data: data,
cache: false,
contentType: false,
processData: false,
beforeSend: function () {
$(".progressbar").show();
},
xhr: function () {
var xhr = $.ajaxSettings.xhr();
if (xhr.upload) {
xhr.upload.addEventListener('progress', showProgress, false);
}
return xhr;
},
success: function (data) {
if (percentComplete <= 100) {
$('#pb div').animate({
width: '100%'
}, {
step: function (now) {
$(this).text(Math.round(now) + '%');
},
duration: 10
});
}
$('#uplcomp').append(data);
}
});
如果用户单击“取消”按钮,我会这样做:
request.abort();
由于上述声明只是中止了ajax请求,因此我没有得到任何响应,例如上传了多少文件,上传了多少mb等。
谁可以帮我这个事?
最佳答案
我认为您的问题没有默认的方式。我要知道的信息-上载了多少文件-并没有存储在XMLHttpRequest对象中。
我想(但从未尝试过)您可以为其创建某种定制。高级分析:跟踪您的上传进度服务器端。在您的数据库中存储有关上载的一些信息:要处理的文件数量,已处理的文件数量,日期/时间,唯一的上载/会话ID。当您中止上载或上传失败时,您可以基于唯一ID,通过ajax从数据库中检索有关上载过程的信息,并将其显示在UI中。
注意:如果请求已经发送到服务器,那么即使我们中止请求,服务器也将处理该请求,但客户端不会等待/处理响应。
希望这可以帮助。
关于javascript - 如何获取ajax发布中文件上传的状态,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/24304641/