Я использую ajax для загрузки файлов.
После загрузки файла php должен проверить его (mime, size, virus (clamscan) и т.д.) - для больших файлов требуется несколько секунд. Пока файл загружается, HTML5 <progress>
заполняется, когда файл готов, и PHP начинает проверку, прогресс должен переключиться на неопределенный. Я думал о том, как это сделать (что оба не работают):
Проверка события upload.onload
xhr.upload.addEventListener("load", function (e) {
$("#uploadprogress").attr("value", false);
$("#uploadprogress").attr("max", false);
$("#progress").text("Checking file...");
});
Это не работает, потому что onload
-event firest, когда запрос готов, а не когда загрузка готова.
Проверка, если процент выполнения загрузки = 100%
xhr.upload.addEventListener("progress", function (e) {
if (e.lengthComputable && e) {
p = (e.loaded / e.total);
if (p==1) {
$("#uploadprogress").attr("value", false);
$("#uploadprogress").attr("max", false);
$("#progress").text("Checking file...");
} else {
var percent = Math.ceil(p * 1000) / 10;
$("#uploadprogress").val(e.loaded);
$("#uploadprogress").attr("max", e.total);
$("#progress").text("Uploading... " + percent + "%");
}
}
}
});
Это не работает, потому что процент загрузки иногда останавливается примерно прибл. 97%, несмотря на то, что загрузка завершена, и PHP начинает обрабатывать файлы
Есть ли еще возможность проверить это?