document.addEventListener("DOMContentLoaded", () => { const fileInput = document.querySelector("#uploader"); const progressArea = document.querySelector(".progress-area"); const uploadedArea = document.querySelector(".uploaded-area"); const uploadTrigger = fileInput.closest('div').querySelector('p'); // Add event listener to the upload trigger element uploadTrigger.addEventListener("click", () => { fileInput.click(); }); fileInput.onchange = ({ target }) => { let file = target.files[0]; if (file) { let fileName = file.name; if (fileName.length >= 12) { let splitName = fileName.split('.'); fileName = splitName[0].substring(0, 13) + "... ." + splitName[1]; } // Clear previous progress and uploaded file information progressArea.innerHTML = ""; uploadedArea.innerHTML = ""; uploadFile(fileName, file); } }; function uploadFile(name, file) { let xhr = new XMLHttpRequest(); xhr.open("POST", "upload"); // Change URL to your upload endpoint xhr.upload.addEventListener("progress", ({ loaded, total }) => { let fileLoaded = Math.floor((loaded / total) * 100); let fileTotal = Math.floor(total / 1000); let fileSize; (fileTotal < 1024) ? fileSize = fileTotal + " KB" : fileSize = (loaded / (1024 * 1024)).toFixed(2) + " MB"; let progressHTML = `
  • ${name} • Uploading ${fileLoaded}%
  • `; uploadedArea.classList.add("onprogress"); progressArea.innerHTML = progressHTML; if (loaded === total) { progressArea.innerHTML = ""; let uploadedHTML = `

    ${name}

    ${fileSize}

    `; uploadedArea.classList.remove("onprogress"); uploadedArea.innerHTML = uploadedHTML; } }); let formData = new FormData(); formData.append('file', file); xhr.send(formData); } });