0
這裏是我的代碼,我有這個代碼上傳文件,但幾乎每一次,2個或多個文件不要因爲相同類型的錯誤的成功:異步上傳多個文件而不彼此跺腳?
http://localhost:8080/_ah/upload/ag9mdW5ueS1wYWdlcy1ocmRyIgsSFV9fQmxvYlVwbG9hZFNlc3Npb25fXxiAgICAgICKCgw
404 (No upload session: ag9mdW5ueS1wYWdlcy1ocmRyIgsSFV9fQmxvYlVwbG9hZFNlc3Npb25fXxiAgICAgICKCgw)
現在這裏是我需要爲每個文件獲取不同的上傳url。 getUploadURL()
正在爲每個呼叫返回完全相同的URL。
Cache Busting也沒有幫助。
我試過了Ext.TaskManager
,沒有它,結果相同,上面發佈的錯誤是我用來測試的10個文件中的至少2個。
var files = Ext.getDom('select-upload-button-fileInputEl').files;
function uploadFile(url, f) {
var fd = new FormData();
fd.append('file', f, f.name);
var xhr = new XMLHttpRequest();
xhr.upload.addEventListener('progress', function (e) {
console.log(f.name + " : " + (e.loaded/e.total) * 100 + "%");
});
xhr.upload.addEventListener('load', function (e) {
console.log(f.name + ' Transfer Complete');
});
xhr.open('POST', url, true);
xhr.send(fd);
}
function getUploadURL(f) {
var xhr = new XMLHttpRequest();
xhr.addEventListener('load', function() {
var url = this.responseText;
console.log(url);
var task = Ext.TaskManager.start({
run: uploadFile(url, f)
});
});
xhr.open('GET', '/upload', true);
xhr.send()
}
Ext.each(files, function (f) {
var task = Ext.TaskManager.start({
run: getUploadURL(f)
});
});
如果我更改代碼做xhr.open('GET', '/upload', false);
和xhr.open('POST', url, false);
,它可以作爲期望的,但我寧願把它異步如果可能的話。
僅限HTML5解決方案是可以接受的。