function uploadPhotos() { // 1. PLACE YOUR GOOGLE APPS SCRIPT WEB APP URL HERE const WEB_APP_URL = "https://script.google.com/macros/s/AKfycbxcXqUg8rOiZqwvhw84LM4X121F6NhLniLbk6Gp5V_zWXkTWkQO8ZhoEgHzcvy5mSVv/exec"; const fileInput = document.getElementById('photoInput'); const uploadBtn = document.getElementById('uploadBtn'); const statusMsg = document.getElementById('statusMessage'); const files = fileInput.files; if (files.length === 0) { statusMsg.className = "status-msg error"; statusMsg.innerText = "Please select at least one photo."; return; } if (files.length > 5) { statusMsg.className = "status-msg error"; statusMsg.innerText = "You can only upload a maximum of 5 photos at a time."; return; } uploadBtn.disabled = true; statusMsg.className = "status-msg"; statusMsg.innerText = `Preparing ${files.length} photo(s)...`; const preparedFiles = []; let readCount = 0; for (let i = 0; i < files.length; i++) { const file = files[i]; const reader = new FileReader(); reader.onload = function(e) { // Split extracts ONLY the pure base64 data stream const base64Data = e.target.result.split(',')[1]; preparedFiles.push({ base64: base64Data, mimeType: file.type, filename: file.name }); readCount++; if (readCount === files.length) { statusMsg.innerText = "Uploading to Google Drive, please wait..."; // CRUCIAL: 'text/plain;charset=utf-8' forces a simple bypass over CORS locks fetch(WEB_APP_URL, { method: "POST", headers: { "Content-Type": "text/plain;charset=utf-8" }, body: JSON.stringify({ files: preparedFiles }) }) .then(response => response.json()) .then(data => { if (data.status === "success") { statusMsg.className = "status-msg success"; statusMsg.innerText = "✨ " + data.message; fileInput.value = ""; } else { statusMsg.className = "status-msg error"; statusMsg.innerText = "Error: " + data.message; } uploadBtn.disabled = false; }) .catch(error => { statusMsg.className = "status-msg error"; statusMsg.innerText = "Submission failed. Please confirm script deployment permissions."; uploadBtn.disabled = false; }); } }; reader.readAsDataURL(file); } }
