| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768 |
- 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) {
- const response = NextResponse.json({
- success: false,
- error: "No file provided",
- }, { status: 400 });
-
- response.headers.set('Access-Control-Allow-Origin', '*');
- return response;
- }
- // 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,
- },
- });
- const response = NextResponse.json({
- success: true,
- file: {
- id: savedFile.id,
- filename: savedFile.filename,
- mimetype: savedFile.mimetype,
- size: savedFile.size,
- createdAt: savedFile.createdAt,
- },
- });
-
- response.headers.set('Access-Control-Allow-Origin', '*');
- return response;
- } catch (error) {
- console.error("Upload error:", error);
- const response = NextResponse.json({
- success: false,
- error: "Failed to upload file",
- }, { status: 500 });
-
- response.headers.set('Access-Control-Allow-Origin', '*');
- return response;
- } finally {
- await prisma.$disconnect();
- }
- };
- export const OPTIONS = async () => {
- const response = new NextResponse(null, { status: 200 });
- response.headers.set('Access-Control-Allow-Origin', '*');
- response.headers.set('Access-Control-Allow-Methods', 'GET, POST, PUT, DELETE, OPTIONS');
- response.headers.set('Access-Control-Allow-Headers', 'Content-Type, Authorization');
- return response;
- };
|