Files
mnote/wolai-frontend/src/app/mindmaps/[docId]/[...filePath]/route.ts
T
2026-01-15 20:54:21 +08:00

38 lines
1.1 KiB
TypeScript

import { promises as fs } from "fs";
import path from "path";
import { getLegacyMindmapsBaseDir } from "@/lib/server/local-paths";
export const dynamic = "force-dynamic";
export async function GET(
_req: Request,
{ params }: { params: Promise<{ docId: string; filePath: string[] }> },
) {
const { docId, filePath } = await params;
if (!docId || !Array.isArray(filePath) || filePath.length === 0) {
return new Response("Not Found", { status: 404 });
}
const baseDir = path.resolve(getLegacyMindmapsBaseDir(), docId);
const resolved = path.resolve(baseDir, ...filePath);
if (!resolved.startsWith(baseDir + path.sep)) {
return new Response("Bad Request", { status: 400 });
}
try {
const buf = await fs.readFile(resolved);
const ext = path.extname(resolved).toLowerCase();
const contentType =
ext === ".json"
? "application/json; charset=utf-8"
: "application/octet-stream";
return new Response(buf, {
headers: { "Content-Type": contentType, "Cache-Control": "no-store" },
});
} catch {
return new Response("Not Found", { status: 404 });
}
}