base_ui/server/api/upload.post.ts

31 lines
904 B
TypeScript
Raw Normal View History

2025-03-11 10:16:19 +00:00
import { defineEventHandler, readMultipartFormData } from "h3";
import { promises as fs } from "fs";
import sharp from "sharp";
export default defineEventHandler(async (event) => {
const files = await readMultipartFormData(event);
if (!files || files.length === 0) {
return { error: "No files uploaded" };
}
const uploadedFile = files[0];
const fileName = `cropped-${Date.now()}.png`;
const filePath = `./public/uploads/${fileName}`;
// Save the cropped image
await fs.writeFile(filePath, uploadedFile.data);
// Optionally resize the image
const resizedFilePath = `./public/uploads/resized-${fileName}`;
await sharp(uploadedFile.data)
.resize(300, 300) // Adjust dimensions as needed
.toFile(resizedFilePath);
return {
message: "File uploaded successfully",
originalFile: `/uploads/${fileName}`,
resizedFile: `/uploads/resized-${fileName}`,
};
});