random login image!
This commit is contained in:
@@ -1,5 +1,7 @@
|
||||
// src/routes/api/upload.js
|
||||
|
||||
import { db } from "$lib/db/db.server";
|
||||
import { imagesTable } from "$lib/db/schema";
|
||||
import { deleteObject, ensureBucketExists, uploadObject } from "$lib/server/s3";
|
||||
import type { RequestEvent } from "@sveltejs/kit";
|
||||
import { generateId } from "lucia";
|
||||
@@ -10,6 +12,7 @@ export async function POST(event: RequestEvent): Promise<Response> {
|
||||
const fileExtension = contentType.split("/").pop();
|
||||
const fileName = `${generateId(75)}.${fileExtension}`;
|
||||
const bucket = event.request.headers.get("bucket") as string;
|
||||
const type = event.request.headers.get("type") as string | null;
|
||||
|
||||
if (!fileExtension || !fileName) {
|
||||
return new Response(JSON.stringify({ error: "Invalid file type" }), {
|
||||
@@ -32,7 +35,6 @@ export async function POST(event: RequestEvent): Promise<Response> {
|
||||
);
|
||||
}
|
||||
|
||||
// check if the file is an image
|
||||
if (!contentType.startsWith("image")) {
|
||||
return new Response(JSON.stringify({ error: "Invalid file type" }), {
|
||||
status: 400,
|
||||
@@ -49,7 +51,7 @@ export async function POST(event: RequestEvent): Promise<Response> {
|
||||
|
||||
await ensureBucketExists(bucket);
|
||||
|
||||
if (event.locals.user?.icon) {
|
||||
if (event.locals.user?.icon && bucket === "profile-pics") {
|
||||
const key: string = event.locals.user.icon.split("/").pop() as string;
|
||||
await deleteObject(bucket, key);
|
||||
}
|
||||
@@ -60,6 +62,13 @@ export async function POST(event: RequestEvent): Promise<Response> {
|
||||
Buffer.from(fileBuffer)
|
||||
);
|
||||
|
||||
if (bucket === "images" && type && type === "background") {
|
||||
let res = await db.insert(imagesTable).values({
|
||||
url: objectUrl,
|
||||
type: "background",
|
||||
});
|
||||
}
|
||||
|
||||
console.log(`File uploaded to ${objectUrl}`);
|
||||
|
||||
return new Response(JSON.stringify({ objectUrl }), {
|
||||
|
||||
Reference in New Issue
Block a user