blaro
Member | Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору "use strict"; let dropArea=document.getElementById("dragndroparea"); let filesDone = 0; let filesToDo = 0; let progressBar = document.getElementById('progress-bar'); ['dragenter','dragover', 'dragleave','drop'].forEach(eventName=>{ dropArea.addEventListener(eventName,preventDefaults,false); }); function preventDefaults(e){ e.preventDefault(); e.stopPropagation(); } ['dragenter','dragover'].forEach(eventName=>{ dropArea.addEventListener(eventName,hilight,false); }); ['dragleave','drop'].forEach(eventName=>{ dropArea.addEventListener(eventName,unhilight,false); }); function hilight(e){ dropArea.classList.add('hilight'); } function unhilight(e){ dropArea.classList.remove('hilight'); } dropArea.addEventListener('drop',handleDrop,false); function handleDrop(e){ let dt=e.dataTransfer; let files=dt.file; handleFiles(files); } function previewFile(file) { let reader = new FileReader(); reader.readAsDataURL(file); reader.onloadend = function() { let img = document.createElement('img'); img.src = reader.result; document.getElementById('gallery').appendChild(img); } } function handleFiles(files) { files = [...files]; initializeProgress(files.length); files.forEach(uploadFile); files.forEach(previewFile); } function initializeProgress(numfiles) { progressBar.value = 0 filesDone = 0 filesToDo = numfiles; } function progressDone() { filesDone++; progressBar.value = filesDone / filesToDo * 100; } function uploadFile(file) { let url = '/image/upload'; let formData = new FormData(); formData.append('file', file); fetch(url, { method: 'POST', body: formData }) .then(progressDone) // <- Добавим вызов `progressDone` здесь .catch(() => { alert("Something went wrong!") }) } |