base_ui/server/api/upload.post.ts
2025-03-11 13:46:19 +03:30

31 lines
904 B
TypeScript

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}`,
};
});