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解决方案是可以接受的。