中止多文件上传 AJAX 请求

Abort a multiple file upload AJAX request

我正在尝试使用进度条中止多文件上传,显示进程状态。

我想要实现的是在点击中止按钮时完全中止多文件上传;停止进度条并清除在最初触发的多文件上传过程中可能已上传的每个文件。

下面是我的代码:

var AJAX = $.ajax({ 
    xhr: function() {
        var XHR = new window.XMLHttpRequest();

        XHR.upload.addEventListener('progress', function(e) {
          if (e.lengthComputable) {

            var PROGRESS = Math.round((e.loaded/e.total)*100);
            $('#PROGRESS_BAR').text(PROGRESS);

        } }, false); return XHR; },
    url        : '/php.php',
    type       : 'POST',
    data       : DATA,
    cache      : false,
    processData: false,
    contentType: false,
    beforeSend : function() { }, 
    success    : function() { } 
});

$(document).on('click', '.ABORT', function(e) {     
    AJAX.abort();
});

我使用上面的代码动态上传带有进度条的图片。

我发现很多文章使用 .abort() 来停止进程,但这似乎只在浏览器端有效,在服务器端无效。

我可以用什么方式完全停止上传,如:在客户端和服务器端,因为 .abort() 不能使我获得理想的结果?

试试这个:

var XHR = new window.XMLHttpRequest();
var AJAX = $.ajax({ 
    xhr: function() {
        XHR.upload.addEventListener('progress', function(e) {
          if (e.lengthComputable) {

            var PROGRESS = Math.round((e.loaded/e.total)*100);
            $('#PROGRESS_BAR').text(PROGRESS);

        } }, false); return XHR; },
    url        : '/php.php',
    type       : 'POST',
    data       : DATA,
    cache      : false,
    processData: false,
    contentType: false,
    beforeSend : function() { }, 
    success    : function() { } 
});

$(document).on('click', '.ABORT', function(e){      
    XHR.abort();
});