From 7b8c7f1ae494e119ec622772bee2ae6a39e47601 Mon Sep 17 00:00:00 2001 From: dswbx Date: Fri, 21 Mar 2025 18:01:44 +0100 Subject: [PATCH] fix s3 media upload in node environments by adding content length to request --- app/src/media/storage/adapters/StorageS3Adapter.ts | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/app/src/media/storage/adapters/StorageS3Adapter.ts b/app/src/media/storage/adapters/StorageS3Adapter.ts index c5bfe78..37c651d 100644 --- a/app/src/media/storage/adapters/StorageS3Adapter.ts +++ b/app/src/media/storage/adapters/StorageS3Adapter.ts @@ -118,14 +118,20 @@ export class StorageS3Adapter extends AwsClient implements StorageAdapter { const res = await this.fetch(url, { method: "PUT", body, + headers: isFile(body) + ? { + // required for node environments + "Content-Length": String(body.size), + } + : {}, }); - if (res.ok) { - // "df20fcb574dba1446cf5ec997940492b" - return String(res.headers.get("etag")); + if (!res.ok) { + throw new Error(`Failed to upload object: ${res.status} ${res.statusText}`); } - return undefined; + // "df20fcb574dba1446cf5ec997940492b" + return String(res.headers.get("etag")); } private async headObject(