diff --git a/src/routes/api/upload/+server.ts b/src/routes/api/upload/+server.ts index 1e582c8..09d40ca 100644 --- a/src/routes/api/upload/+server.ts +++ b/src/routes/api/upload/+server.ts @@ -1,7 +1,6 @@ // src/routes/api/upload.js -import { ensureBucketExists, s3Client, uploadObject } from "$lib/server/s3"; -import { HeadBucketCommand } from "@aws-sdk/client-s3"; +import { ensureBucketExists, uploadObject } from "$lib/server/s3"; import type { RequestEvent } from "@sveltejs/kit"; import { generateId } from "lucia"; @@ -10,6 +9,7 @@ export async function POST(event: RequestEvent): Promise { const contentType = event.request.headers.get("content-type") ?? ""; const fileExtension = contentType.split("/").pop(); const fileName = `${generateId(25)}.${fileExtension}`; + const bucket = event.request.headers.get("bucket") as string; if (!fileExtension || !fileName) { return new Response(JSON.stringify({ error: "Invalid file type" }), { @@ -20,6 +20,18 @@ export async function POST(event: RequestEvent): Promise { }); } + if (!bucket) { + return new Response( + JSON.stringify({ error: "Bucket name is required" }), + { + status: 400, + headers: { + "Content-Type": "application/json", + }, + } + ); + } + // check if the file is an image if (!contentType.startsWith("image")) { return new Response(JSON.stringify({ error: "Invalid file type" }), { @@ -35,10 +47,10 @@ export async function POST(event: RequestEvent): Promise { "Content-Type": contentType, }; - await ensureBucketExists("profile-pics"); + await ensureBucketExists(bucket); const objectUrl = await uploadObject( - "profile-pics", + bucket, fileName, Buffer.from(fileBuffer) ); diff --git a/src/routes/settings/+page.server.ts b/src/routes/settings/+page.server.ts index edd5857..03d8680 100644 --- a/src/routes/settings/+page.server.ts +++ b/src/routes/settings/+page.server.ts @@ -81,6 +81,9 @@ export const actions: Actions = { const response = await event.fetch("/api/upload", { method: "POST", body: profilePicture, + headers: { + bucket: "profile-pics", + }, }); const data = await response.json();