Static-002 / script.js
pakdeveloper's picture
Create script.js
bc8d4f4 verified
Raw
History Blame Contribute Delete
1.93 kB
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);
}
});