From d706a8676d0127aca8e23b2c850433540d4b051e Mon Sep 17 00:00:00 2001 From: ilotterytea Date: Sat, 26 Jul 2025 19:11:12 +0500 Subject: feat: multiple uploads --- public/index.php | 22 +++++++++++++++------- public/static/scripts/favorites.js | 1 - public/static/scripts/form.js | 6 +++++- 3 files changed, 20 insertions(+), 9 deletions(-) diff --git a/public/index.php b/public/index.php index ddbd21a..62d0481 100644 --- a/public/index.php +++ b/public/index.php @@ -334,7 +334,7 @@ $privacy_exists = is_file($_SERVER['DOCUMENT_ROOT'] . '/static/PRIVACY.txt');

File:


@@ -505,11 +505,18 @@ $privacy_exists = is_file($_SERVER['DOCUMENT_ROOT'] . '/static/PRIVACY.txt'); const uploadedFiles = document.getElementById('uploaded-files'); + let files = []; + const formUpload = document.getElementById('form-upload'); formUpload.addEventListener('submit', (event) => { event.preventDefault(); displayTab('file-tabs', 'uploaded-files'); - uploadData(new FormData(formUpload)); + for (const file of files) { + const form = new FormData(formUpload); + form.set("file", file); + uploadData(form); + } + files.clear(); fileUploadWrapper.innerHTML = '

Click, drop, or paste files here

'; setFormDetailsVisiblity(false); @@ -535,8 +542,8 @@ $privacy_exists = is_file($_SERVER['DOCUMENT_ROOT'] . '/static/PRIVACY.txt'); const formFile = document.getElementById('form-file'); formFile.style.display = 'none'; formFile.addEventListener("change", (e) => { - file = e.target.files[0]; - showFile(file); + files = e.target.files; + showFile(files); }); fileUploadWrapper.addEventListener("click", () => formFile.click()); @@ -546,14 +553,15 @@ $privacy_exists = is_file($_SERVER['DOCUMENT_ROOT'] . '/static/PRIVACY.txt'); // --------------------- fileUploadWrapper.addEventListener("drop", (e) => { e.preventDefault(); + files.clear(); if (e.dataTransfer.items) { for (const item of e.dataTransfer.items) { if (item.kind === "file") { file = item.getAsFile(); - showFile(file); - break; + files.push(file); } } + showFile(files); } }); fileUploadWrapper.addEventListener("dragover", (e) => { @@ -562,7 +570,7 @@ $privacy_exists = is_file($_SERVER['DOCUMENT_ROOT'] . '/static/PRIVACY.txt'); fileURLWrapper.style.display = 'none'; }); fileUploadWrapper.addEventListener("dragleave", (e) => { - showFile(file); + showFile(files); }); setFormDetailsVisiblity(false); diff --git a/public/static/scripts/favorites.js b/public/static/scripts/favorites.js index 9104052..60c8a4a 100644 --- a/public/static/scripts/favorites.js +++ b/public/static/scripts/favorites.js @@ -86,7 +86,6 @@ window.addEventListener('load', () => { disableTab('favorite-files'); } data.forEach((x) => { - console.log(x); const item = createUploadedFileItem(x); files.appendChild(item.base); }); diff --git a/public/static/scripts/form.js b/public/static/scripts/form.js index f2736c1..3823af0 100644 --- a/public/static/scripts/form.js +++ b/public/static/scripts/form.js @@ -20,7 +20,11 @@ function showFile(file) { fileURLWrapper.style.display = 'flex'; } } else { - fileUploadWrapper.innerHTML = `

File: ${file.name}

`; + if (file.length == 1) { + fileUploadWrapper.innerHTML = `

File: ${file[0].name}

`; + } else { + fileUploadWrapper.innerHTML = `

Selected ${file.length} files

`; + } if (fileURLWrapper) { fileURLWrapper.style.display = 'none'; -- cgit v1.2.3