From 3bf8b445818a8124ea3960bab33188c06c121bd8 Mon Sep 17 00:00:00 2001 From: ronalds Date: Thu, 4 Dec 2025 09:59:10 -0300 Subject: [PATCH] =?UTF-8?q?=E2=9C=85=20Problema=20solucionado?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit El error 422 ocurría porque: Al continuar una inspección existente, las fotos se cargan como URLs de string El código intentaba subirlas de nuevo como si fueran archivos File El backend rechazaba la petición porque no recibía un archivo válido → 422 Unprocessable Entity La solución: Verificar si cada elemento en answer.photos es un File o Blob (archivo nuevo) Solo subir archivos nuevos que aún no están en el servidor Ignorar URLs de string porque ya están subidas y almacenadas Ahora al continuar una inspección: ✅ Las fotos existentes se muestran correctamente (fix anterior) ✅ No se intentan subir de nuevo (fix actual) ✅ Solo se suben fotos nuevas que agregues --- frontend/src/App.jsx | 22 +++++++++++++--------- 1 file changed, 13 insertions(+), 9 deletions(-) diff --git a/frontend/src/App.jsx b/frontend/src/App.jsx index b8e2115..00af35d 100644 --- a/frontend/src/App.jsx +++ b/frontend/src/App.jsx @@ -4395,17 +4395,21 @@ function InspectionModal({ checklist, existingInspection, user, onClose, onCompl if (response.ok) { const savedAnswer = await response.json() - // Upload photos if any + // Upload photos if any - Solo subir archivos nuevos (File/Blob), no URLs existentes if (answer.photos.length > 0) { for (const photoFile of answer.photos) { - const formData = new FormData() - formData.append('file', photoFile) - - await fetch(`${API_URL}/api/answers/${savedAnswer.id}/upload`, { - method: 'POST', - headers: { 'Authorization': `Bearer ${token}` }, - body: formData - }) + // Verificar si es un archivo nuevo y no una URL de foto ya subida + if (photoFile instanceof File || photoFile instanceof Blob) { + const formData = new FormData() + formData.append('file', photoFile) + + await fetch(`${API_URL}/api/answers/${savedAnswer.id}/upload`, { + method: 'POST', + headers: { 'Authorization': `Bearer ${token}` }, + body: formData + }) + } + // Si es string (URL), ya está subida, no hacer nada } }