route.ts 784 B

1234567891011121314151617181920212223242526272829303132
  1. import { NextRequest, NextResponse } from "next/server";
  2. import path from "path";
  3. import fs from "fs";
  4. const UPLOAD_DIR = path.resolve(process.env.ROOT_PATH ?? "", "public/uploads");
  5. export const POST = async (req: NextRequest) => {
  6. const formData = await req.formData();
  7. const body = Object.fromEntries(formData);
  8. const file = (body.file as Blob) || null;
  9. if (file) {
  10. const buffer = Buffer.from(await file.arrayBuffer());
  11. if (!fs.existsSync(UPLOAD_DIR)) {
  12. fs.mkdirSync(UPLOAD_DIR);
  13. }
  14. fs.writeFileSync(
  15. path.resolve(UPLOAD_DIR, (body.file as File).name),
  16. buffer
  17. );
  18. } else {
  19. return NextResponse.json({
  20. success: false,
  21. });
  22. }
  23. return NextResponse.json({
  24. success: true,
  25. name: (body.file as File).name,
  26. });
  27. };