这是我的代码,我使用此代码上传文件,但几乎每次都有2个或更多文件由于相同类型的错误而无法成功:
http://localhost:8080/_ah/upload/ag9mdW5ueS1wYWdlcy1ocmRyIgsSFV9fQmxvYlVwbG9hZFNlc3Npb25fXxiAgICAgICKCgw
404 (No upload session: ag9mdW5ueS1wYWdlcy1ocmRyIgsSFV9fQmxvYlVwbG9hZFNlc3Npb25fXxiAgICAgICKCgw)
现在我需要为每个文件获取不同的上传URL。
getUploadURL()
为每次通话返回完全相同的网址。
缓存清除也无济于事。
我尝试使用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解决方案。
答案 0 :(得分:0)
我能够使用以下行:
xhr.open('POST', url, false);
而不是
xhr.open('POST', url, true);
我真的很想拥有一个异步解决方案,但是现在我只需要让它工作。