From b8f6444c64fd579a7e503d2304f14fcd359a4cee Mon Sep 17 00:00:00 2001 From: "gpt-engineer-app[bot]" <159125892+gpt-engineer-app[bot]@users.noreply.github.com> Date: Sun, 28 Sep 2025 15:10:25 +0000 Subject: [PATCH] Fix: Implement Cloudflare direct creator upload --- supabase/functions/upload-image/index.ts | 19 +++++++++++++------ 1 file changed, 13 insertions(+), 6 deletions(-) diff --git a/supabase/functions/upload-image/index.ts b/supabase/functions/upload-image/index.ts index b9cf8e13..f1cf6450 100644 --- a/supabase/functions/upload-image/index.ts +++ b/supabase/functions/upload-image/index.ts @@ -23,18 +23,25 @@ serve(async (req) => { // Request a direct upload URL from Cloudflare const { metadata = {} } = await req.json().catch(() => ({})) + // Create FormData for the request (Cloudflare API requires multipart/form-data) + const formData = new FormData() + formData.append('requireSignedURLs', 'false') + + // Add metadata if provided + if (metadata && Object.keys(metadata).length > 0) { + for (const [key, value] of Object.entries(metadata)) { + formData.append(`metadata.${key}`, String(value)) + } + } + const directUploadResponse = await fetch( `https://api.cloudflare.com/client/v4/accounts/${CLOUDFLARE_ACCOUNT_ID}/images/v2/direct_upload`, { method: 'POST', headers: { 'Authorization': `Bearer ${CLOUDFLARE_IMAGES_API_TOKEN}`, - 'Content-Type': 'application/json', }, - body: JSON.stringify({ - requireSignedURLs: false, - metadata: metadata - }), + body: formData, } ) @@ -143,7 +150,7 @@ serve(async (req) => { return new Response( JSON.stringify({ error: 'Internal server error', - message: error.message + message: error instanceof Error ? error.message : 'Unknown error' }), { status: 500,