summaryrefslogtreecommitdiff
path: root/app/api/dolce
diff options
context:
space:
mode:
Diffstat (limited to 'app/api/dolce')
-rw-r--r--app/api/dolce/download/route.ts43
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 }
+ );
+ }
+}
+