2011-06-22 32 views
4

我正在試驗基於AJAX的文件上傳下面this article,到目前爲止進程工作正常,但我一直無法找到我如何可以實現文件列表中止按鈕。如何.abort()ajax文件上傳?

的文章中的核心代碼是這樣的:

var fileInput = document.getElementById('the-file'); 
var file = fileInput.files[0]; 

var xhr = new XMLHttpRequest(); 
xhr.upload.addEventListener('progress', onprogressHandler, false); 
xhr.open('POST', '/upload/uri', true); 
xhr.send(file); 

function onprogressHandler(evt) { 
    var percent = event.loaded/event.total*100; 
    console.log('Upload progress: ' + percent + '%'); 
} 

文中提到,有可能定義一個abort聽衆:

xhr.upload.onabort = function (evt) { 
    console.log("Aborted", evt); 
} 

根據MDC有一個在FileReader objectabort方法,但我不清楚在這種情況下我應該如何使用它(或者,如果它與我一直在尋找的是相同的「中止」)。

我想要的是在選擇上傳的每個文件旁邊有一箇中止按鈕,如果用戶單擊了一個按鈕,那麼該文件應該從列表中刪除,或者如果它的上傳已經開始,它應該立即中止。

回答

7

XMLHttpRequest對象上有一個abort method。 您可以執行以下操作:xhr.abort()並且應該中止請求。

+1

這似乎中止了整個上傳過程。你知道一種只中止選定文件的方法嗎?它有可能嗎? – Wabbitseason

+3

爲什麼不爲每個文件執行一個進程?那麼他們會單獨上傳,而不是排隊...... var files = $(target)[0] .files; var fileCount = files.length; $ .each(files,function(i){}); –