У меня есть форма загрузки файла в Amazon S3 напрямую из браузера, загрузка работает нормально, но я не могу отслеживать ход загрузки - она мгновенно показывает 100%.
Причина, по-моему потому что он публикует во внешнем домене, Amazon, и сообщает 100% о возврате начального запроса OPTIONS, который отправлен. Можно ли как-нибудь проигнорировать этот ответ и отследить следующее событие 'progress'?
var xhr = new XMLHttpRequest();
xhr.open("POST", s3Data.url);
var postData = new FormData();
for(key in s3Data.fields){
postData.append(key, s3Data.fields[key]);
}
postData.append('file', file);
xhr.onreadystatechange = function() {
if(xhr.readyState === 4){
if(xhr.status === 200 || xhr.status === 204){
// complete
}
else{
alert("Could not upload file.");
}
}
};
xhr.upload.addEventListener("progress", function(evt){
if (evt.lengthComputable) {
var percentComplete = evt.loaded / evt.total;
alert("Upload " + Math.round(percentComplete*100) + "% complete.");
}
}, false);
xhr.send(postData);
Событие progress просто срабатывает один раз и выдает 100% предупреждений, что, по-видимому, происходит в ответ на URL-адрес S3, следующий запрос в браузере - это POST, который представляет собой файл загрузки
Любая помощь будет принята с благодарностью, я не могу найти подобные вопросы, но извиняюсь, если пропустил очевидное