如何在ajax帖子中获取文件上传的状态

时间:2014-06-19 10:42:05

标签: javascript php jquery ajax abort

在使用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等等....

有人可以帮我吗?

1 个答案:

答案 0 :(得分:1)

我不认为您的问题有默认方式。您要查找的信息 - 上传了多少文件 - 我的专业知识未将该信息存储在XMLHttpRequest对象中。

我想(但从未尝试过)你可以为它创建一些自定义的自定义。 高级别分析:跟踪上传进度服务器端。在数据库中存储有关上传的一些信息:要处理的文件数量,处理的文件数量,日期/时间,唯一上传/会话ID。当您中止上传或失败时,您可以根据唯一ID,通过数据库中的ajax检索有关上传过程的信息,并将其显示在用户界面中。

注意:如果请求已经发送到服务器,那么即使我们中止请求,服务器也会处理请求,但客户端不会等待/处理响应。

希望这有帮助。