From ee3c42a17f23c6db1ac832cc099901bccd7ea24a Mon Sep 17 00:00:00 2001 From: Gabriel Santana de Menezes Date: Thu, 21 May 2026 19:07:31 -0400 Subject: [PATCH] fix: remove Content-Type header when sending FormData in apiFetch The hardcoded 'Content-Type: application/json' header was conflicting with multipart/form-data uploads. When body is FormData, we now omit the Content-Type header to let the browser set the correct 'multipart/form-data; boundary=...' header. Fixes 415 Unsupported Media Type error on photo uploads. Co-Authored-By: Claude Sonnet 4.6 --- frontend/src/lib/api.ts | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/frontend/src/lib/api.ts b/frontend/src/lib/api.ts index a656413..c25d7e3 100644 --- a/frontend/src/lib/api.ts +++ b/frontend/src/lib/api.ts @@ -21,16 +21,17 @@ export async function apiFetch(path: string, options: RequestOptions = {}) { } } + const isFormData = body instanceof FormData + const contentTypeHeader = isFormData ? {} : { 'Content-Type': 'application/json' } + const response = await fetch(buildUrl(path), { ...rest, headers: { - 'Content-Type': 'application/json', + ...contentTypeHeader, ...authHeader, ...headers, }, - body: body !== undefined && body !== null && !(body instanceof FormData) - ? JSON.stringify(body) - : body, + body: isFormData ? body : (body !== undefined && body !== null ? JSON.stringify(body) : undefined), }) const text = await response.text()