diff options
Diffstat (limited to 'lib/swp/table/swp-table-toolbar.tsx')
| -rw-r--r-- | lib/swp/table/swp-table-toolbar.tsx | 38 |
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) { |
