export const config = { api: { bodyParser: true, // ✅ 이게 false면 안 됨! }, }; import type { NextApiRequest, NextApiResponse } from "next"; import { downloadContractFile } from "@/lib/docuSign/docuSignFns"; import path from "path"; import fs from "fs"; export default async function handler( req: NextApiRequest, res: NextApiResponse ) { if (req.method !== "POST") { return res.status(405).end(); } try { const { envelopeId, fileName, filePath } = req.body; if (!envelopeId) { return res .status(500) .json({ success: false, message: "Not use envelopeId" }); } const docuSignStart = await downloadContractFile(envelopeId); const { result, buffer, error } = docuSignStart; if (result && buffer) { const cleanedPath = filePath.replace(/^\/+/, ""); const dirPath = path.resolve(process.cwd(), "public", cleanedPath); // 예: 'contracts/185/signatures' const fullFilePath = path.join(dirPath, fileName); // 예: 'contracts/185/signatures/xxx.pdf' if (!fs.existsSync(dirPath)) { fs.mkdirSync(dirPath, { recursive: true }); } fs.writeFileSync(fullFilePath, buffer); return res.status(200).json({ success: result, }); } return res.status(200).json({ success: result, message: error?.message, }); } catch (error: any) { res .status(500) .json({ success: false, message: error?.message || "Unknown error" }); } }