Files
gitlab-instance-0a899031_salon/app/api/upload-media/route.ts
2026-03-15 11:19:52 -05:00

24 lines
1.0 KiB
TypeScript

import { NextRequest, NextResponse } from "next/server";
export async function POST(request: NextRequest) {
try {
const formData = await request.formData();
const file = formData.get("file");
if (!file || !(file instanceof File)) {
return NextResponse.json({ ok: false, error: "请选择文件" }, { status: 400 });
}
if (file.size > 20 * 1024 * 1024) {
return NextResponse.json({ ok: false, error: "文件大小不能超过 20MB" }, { status: 400 });
}
const publicUrl = process.env.MINIO_PUBLIC_URL || "https://example.com/uploads";
const prefix = process.env.MINIO_UPLOAD_PREFIX || "joins";
const ext = file.name.split(".").pop() || "jpg";
const filename = `${prefix}/${Date.now()}-${Math.random().toString(36).slice(2)}.${ext}`;
const url = `${publicUrl}/${filename}`;
return NextResponse.json({ ok: true, url });
} catch (e) {
console.error("upload-media error:", e);
return NextResponse.json({ ok: false, error: "上传失败" }, { status: 500 });
}
}