summaryrefslogtreecommitdiff
path: root/lib/swp/table/swp-table-toolbar.tsx
diff options
context:
space:
mode:
authorjoonhoekim <26rote@gmail.com>2025-10-27 17:14:44 +0900
committerjoonhoekim <26rote@gmail.com>2025-10-27 17:14:44 +0900
commit02062af723f1a3c2994c3e80148da47b07712713 (patch)
treefa9e27d9b0d9a9f87ef7ccf05edfb9c2806c06bd /lib/swp/table/swp-table-toolbar.tsx
parent2e92d5f83ae5f0f39090552b46c519982e9279c9 (diff)
(김준회) SWP 다운로드, 업로드 api route 처리, 옥프로 컬럼 순서 조정 처리, 환경변수 오타 수정
Diffstat (limited to 'lib/swp/table/swp-table-toolbar.tsx')
-rw-r--r--lib/swp/table/swp-table-toolbar.tsx38
1 files changed, 22 insertions, 16 deletions
diff --git a/lib/swp/table/swp-table-toolbar.tsx b/lib/swp/table/swp-table-toolbar.tsx
index e7a2ef30..fefff091 100644
--- a/lib/swp/table/swp-table-toolbar.tsx
+++ b/lib/swp/table/swp-table-toolbar.tsx
@@ -10,7 +10,7 @@ import {
} from "@/components/ui/popover";
import { Label } from "@/components/ui/label";
import { RefreshCw, Search, X, Check, ChevronsUpDown, Upload } from "lucide-react";
-import { syncSwpProjectAction, uploadSwpFilesAction, type SwpTableFilters } from "../actions";
+import { syncSwpProjectAction, type SwpTableFilters } from "../actions";
import { useToast } from "@/hooks/use-toast";
import { useRouter } from "next/navigation";
import { cn } from "@/lib/utils";
@@ -137,27 +137,33 @@ export function SwpTableToolbar({
description: `${selectedFiles.length}개 파일을 업로드합니다...`,
});
- // 파일을 Buffer로 변환
- const fileInfos = await Promise.all(
- Array.from(selectedFiles).map(async (file) => {
- const arrayBuffer = await file.arrayBuffer();
- return {
- fileName: file.name,
- fileBuffer: Buffer.from(arrayBuffer),
- };
- })
- );
+ // FormData 생성 (바이너리 직접 전송)
+ const formData = new FormData();
+ formData.append("projNo", projectNo);
+ formData.append("vndrCd", vndrCd);
+
+ Array.from(selectedFiles).forEach((file) => {
+ formData.append("files", file);
+ });
+
+ // API Route 호출
+ const response = await fetch("/api/swp/upload", {
+ method: "POST",
+ body: formData,
+ });
+
+ if (!response.ok) {
+ throw new Error(`업로드 실패: ${response.statusText}`);
+ }
- // 서버 액션 호출
- const result = await uploadSwpFilesAction(projectNo, vndrCd, fileInfos);
+ const result = await response.json();
// 결과 저장 및 다이얼로그 표시
- setUploadResults(result.details);
+ setUploadResults(result.details || []);
setShowResultDialog(true);
// 성공한 파일이 있으면 페이지 새로고침
- const successCount = result.details.filter((d) => d.success).length;
- if (successCount > 0) {
+ if (result.successCount > 0) {
router.refresh();
}
} catch (error) {