| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051 |
- import { NextRequest, NextResponse } from "next/server";
- import { PrismaClient } from "@prisma/client";
- const prisma = new PrismaClient();
- export const POST = async (req: NextRequest) => {
- try {
- const formData = await req.formData();
- const body = Object.fromEntries(formData);
- const file = (body.file as File) || null;
- if (!file) {
- return NextResponse.json({
- success: false,
- error: "No file provided",
- }, { status: 400 });
- }
- // Convert file to buffer
- const buffer = Buffer.from(await file.arrayBuffer());
-
- // Store file in database
- const savedFile = await prisma.file.create({
- data: {
- filename: file.name,
- mimetype: file.type,
- size: file.size,
- data: buffer,
- },
- });
- return NextResponse.json({
- success: true,
- file: {
- id: savedFile.id,
- filename: savedFile.filename,
- mimetype: savedFile.mimetype,
- size: savedFile.size,
- createdAt: savedFile.createdAt,
- },
- });
- } catch (error) {
- console.error("Upload error:", error);
- return NextResponse.json({
- success: false,
- error: "Failed to upload file",
- }, { status: 500 });
- } finally {
- await prisma.$disconnect();
- }
- };
|