feat(frontend): POST for images

This commit is contained in:
h
2026-01-21 10:38:57 +01:00
parent 8b38e04039
commit 14617cba84
2 changed files with 19 additions and 4 deletions

View File

@@ -26,6 +26,9 @@
} }
handle { handle {
request_body {
max_size 50MB
}
reverse_proxy stealth-ai-relay-frontend:3000 reverse_proxy stealth-ai-relay-frontend:3000
} }
} }

View File

@@ -37,11 +37,21 @@ export const POST: RequestHandler = async ({ params, request, locals }) => {
if (rawContentType.includes('multipart/form-data')) { if (rawContentType.includes('multipart/form-data')) {
const formData = await request.formData(); const formData = await request.formData();
console.log('[POST /{mnemonic}] formData keys:', [...formData.keys()]); const keys = [...formData.keys()];
console.log('[POST /{mnemonic}] formData keys:', keys);
const file = formData.get('file') || formData.get('image') || formData.values().next().value; let file: File | null = null;
if (!(file instanceof File)) { for (const key of ['file', 'image', 'photo', 'upload', 'attachment', ...keys]) {
throw error(400, 'No file found in form data'); const value = formData.get(key);
if (value instanceof File) {
file = value;
console.log('[POST /{mnemonic}] found file in field:', key);
break;
}
}
if (!file) {
throw error(400, `No file found in form data. Keys: ${keys.join(', ')}`);
} }
const buffer = await file.arrayBuffer(); const buffer = await file.arrayBuffer();
@@ -50,6 +60,8 @@ export const POST: RequestHandler = async ({ params, request, locals }) => {
mediaType = detectImageType(bytes) || file.type || 'image/jpeg'; mediaType = detectImageType(bytes) || file.type || 'image/jpeg';
console.log('[POST /{mnemonic}] file:', file.name, file.type, 'size:', buffer.byteLength); console.log('[POST /{mnemonic}] file:', file.name, file.type, 'size:', buffer.byteLength);
} else if (rawContentType.includes('application/x-www-form-urlencoded')) {
throw error(400, 'Use Form with File field, not URL-encoded form');
} else { } else {
const buffer = await request.arrayBuffer(); const buffer = await request.arrayBuffer();
const bytes = new Uint8Array(buffer); const bytes = new Uint8Array(buffer);