Online Smart File Sharing & Access Control Tool

File Sharing & Access Control

No files uploaded yet.

No files uploaded yet.

'; return; } files.forEach(file => { const item = document.createElement('div'); item.className = 'file-item'; item.innerHTML = `
${file.name}
${(file.size / 1024).toFixed(2)} KB
`; fileList.appendChild(item); }); }; // --- File Handling --- uploadBtn.addEventListener('click', () => fileInput.click()); fileInput.addEventListener('change', (e) => { for (const file of e.target.files) { const newFile = { id: Date.now() + Math.random(), name: file.name, size: file.size, link: `https://example.com/share?id=${btoa(file.name)}`, permissions: 'view' }; files.push(newFile); } renderFiles(); }); // --- Modal Logic --- const openModal = (id) => { const file = files.find(f => f.id === id); if (file) { fileIdInput.value = file.id; modalTitle.innerText = `Share "${file.name}"`; shareLinkInput.value = file.link; permissionsSelect.value = file.permissions; accessModal.style.display = 'flex'; } }; const closeModal = () => { accessModal.style.display = 'none'; }; permissionsSelect.addEventListener('change', (e) => { const fileId = parseFloat(fileIdInput.value); const file = files.find(f => f.id === fileId); if (file) { file.permissions = e.target.value; } }); // --- Event Delegation for File Actions --- fileList.addEventListener('click', (e) => { if (e.target.classList.contains('share-btn')) { openModal(parseFloat(e.target.dataset.id)); } if (e.target.classList.contains('delete-btn')) { const id = parseFloat(e.target.dataset.id); if (confirm('Are you sure you want to delete this file?')) { files = files.filter(f => f.id !== id); renderFiles(); } } }); closeModalBtn.addEventListener('click', closeModal); // --- PDF Generation --- pdfBtn.addEventListener('click', () => { const { jsPDF } = window.jspdf; const doc = new jsPDF({ unit: 'pt', format: 'a4' }); const pageWidth = doc.internal.pageSize.getWidth(); const margin = 40; let cursorY = margin; doc.setFont('helvetica', 'bold'); doc.setFontSize(20); doc.text('File Access Control Report', pageWidth / 2, cursorY, { align: 'center' }); cursorY += 30; files.forEach(file => { if (cursorY > doc.internal.pageSize.getHeight() - margin) { doc.addPage(); cursorY = margin; } doc.setFont('helvetica', 'bold'); doc.setFontSize(12); doc.text(file.name, margin, cursorY); cursorY += 15; doc.setFont('helvetica', 'normal'); doc.setFontSize(10); doc.text(`Size: ${(file.size / 1024).toFixed(2)} KB`, margin, cursorY); cursorY += 12; doc.text(`Permissions: ${file.permissions === 'view' ? 'Can View' : 'Can Edit'}`, margin, cursorY); cursorY += 12; doc.setTextColor(0, 0, 255); doc.textWithLink('Link', margin, cursorY, { url: file.link }); doc.setTextColor(0, 0, 0); cursorY += 25; }); doc.save('File-Access-Report.pdf'); }); // Initial Render renderFiles(); });
Scroll to Top