'init'
This commit is contained in:
23
app/api/upload-media/route.ts
Normal file
23
app/api/upload-media/route.ts
Normal file
@@ -0,0 +1,23 @@
|
||||
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 });
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user