diff options
| author | joonhoekim <26rote@gmail.com> | 2025-11-23 16:40:37 +0900 |
|---|---|---|
| committer | joonhoekim <26rote@gmail.com> | 2025-11-23 16:40:37 +0900 |
| commit | fd4909bba7be8abc1eeab9ae1b4621c66a61604a (patch) | |
| tree | d375995611de80b55b344b1c536c5a760f06ccb6 /app/api | |
| parent | a2e0785c8749c4d3766ecf3b70edfb7c2fe4df20 (diff) | |
(김준회) 돌체 재개발 - 1차 (다운로드 오류 수정 필요)
Diffstat (limited to 'app/api')
| -rw-r--r-- | app/api/dolce/download/route.ts | 43 |
1 files changed, 43 insertions, 0 deletions
diff --git a/app/api/dolce/download/route.ts b/app/api/dolce/download/route.ts new file mode 100644 index 00000000..9d5eb601 --- /dev/null +++ b/app/api/dolce/download/route.ts @@ -0,0 +1,43 @@ +import { NextRequest, NextResponse } from "next/server"; +import { downloadDolceFile } from "@/lib/dolce/actions"; + +export async function POST(request: NextRequest) { + try { + const body = await request.json(); + const { fileId, userId, fileName } = body; + + if (!fileId || !userId || !fileName) { + return NextResponse.json( + { error: "필수 파라미터가 누락되었습니다" }, + { status: 400 } + ); + } + + console.log("[DOLCE Download API] 요청:", { fileId, userId, fileName }); + + // DOLCE API를 통해 파일 다운로드 + const { blob, fileName: downloadFileName } = await downloadDolceFile({ + fileId, + userId, + fileName, + }); + + // ArrayBuffer로 변환하여 Response 생성 + const arrayBuffer = await blob.arrayBuffer(); + + return new NextResponse(arrayBuffer, { + headers: { + "Content-Type": "application/octet-stream", + "Content-Disposition": `attachment; filename*=UTF-8''${encodeURIComponent(downloadFileName)}`, + "Content-Length": arrayBuffer.byteLength.toString(), + }, + }); + } catch (error) { + console.error("파일 다운로드 API 오류:", error); + return NextResponse.json( + { error: error instanceof Error ? error.message : "파일 다운로드 중 오류가 발생했습니다" }, + { status: 500 } + ); + } +} + |
