中止多文件上传AJAX请求

use*_*264 5 javascript ajax jquery abort

我试图通过进度条中止多个文件上传,显示进程的状态.

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

以下是我的代码:

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();
});
Run Code Online (Sandbox Code Playgroud)

我使用上面的代码通过进度条动态上传图像.

我发现有很多文章.abort()用来停止这个过程,但这似乎只适用于浏览器端,而不是服务器端.

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

小智 8

试试这个:

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();
});
Run Code Online (Sandbox Code Playgroud)

  • 您能否澄清一下您的代码和@ user3565264代码之间的区别?当用户取消上传时,如何处理服务器端的清理过程? (2认同)