1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
|
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" });
}
}
|