Spaces:
Running
Running
File size: 1,933 Bytes
bc8d4f4 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 | document.addEventListener("DOMContentLoaded", () => {
const dropArea = document.getElementById('drop-area');
const fileInput = document.getElementById('file-input');
const gallery = document.getElementById('gallery');
// Prevent default drag behaviors
['dragenter', 'dragover', 'dragleave', 'drop'].forEach(eventName => {
dropArea.addEventListener(eventName, preventDefaults, false);
});
function preventDefaults(e) {
e.preventDefault();
e.stopPropagation();
}
// Highlight drop area when item is dragged over it
['dragenter', 'dragover'].forEach(eventName => {
dropArea.addEventListener(eventName, () => dropArea.classList.add('highlight'), false);
});
['dragleave', 'drop'].forEach(eventName => {
dropArea.addEventListener(eventName, () => dropArea.classList.remove('highlight'), false);
});
// Handle dropped files
dropArea.addEventListener('drop', handleDrop, false);
function handleDrop(e) {
const dt = e.dataTransfer;
const files = dt.files;
handleFiles(files);
}
// Open file input when the button is clicked
document.getElementById('file-input-button').addEventListener('click', () => {
fileInput.click();
});
// Handle files selected via file input
fileInput.addEventListener('change', () => {
handleFiles(fileInput.files);
});
function handleFiles(files) {
[...files].forEach(uploadFile);
}
function uploadFile(file) {
if (!file.type.startsWith('image/')) {
alert('Please upload only image files.');
return;
}
const reader = new FileReader();
reader.onload = function(e) {
const img = document.createElement('img');
img.src = e.target.result;
gallery.appendChild(img);
};
reader.readAsDataURL(file);
}
}); |