From 45ab8e6b5d82655cf398303d84d9179287a5d3e9 Mon Sep 17 00:00:00 2001 From: hynseok Date: Fri, 4 Oct 2024 12:19:20 +0900 Subject: [PATCH] =?UTF-8?q?fix:=20=ED=8C=8C=EC=9D=BC=20=EC=97=85=EB=A1=9C?= =?UTF-8?q?=EB=93=9C=20api=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/hooks/useFiles/useFiles.ts | 37 +++++++++++++++++----------------- 1 file changed, 18 insertions(+), 19 deletions(-) diff --git a/src/hooks/useFiles/useFiles.ts b/src/hooks/useFiles/useFiles.ts index de3be32..7d554cf 100644 --- a/src/hooks/useFiles/useFiles.ts +++ b/src/hooks/useFiles/useFiles.ts @@ -34,10 +34,11 @@ export function useFiles() { /** * 파일 업로드 함수, 백엔드 [POST] /files API 호출 - * 파일 업로드에 실패할 경우 재시도 */ const uploadFiles = async (files: { id: string; file: File | null }[]) => { const fileIds: string[] = []; + const filesToUpload: FormData = new FormData(); + for (const { file, id } of files) { if (file) { // temp file의 경우에 id만 추가 @@ -46,26 +47,24 @@ export function useFiles() { continue; } - const formData = new FormData(); - formData.append("file", file); - - // 작업의 원자성을 위해 while 루프를 사용 - let success = false; - while (!success) { - try { - const response = await CommonAxios.post("/files", formData, { - headers: { - "Content-Type": "multipart/form-data", - }, - }); - fileIds.push(response.data.id); // 서버에서 반환된 파일 ID - success = true; - } catch (error) { - console.error(`파일 업로드에 실패했습니다: ${file.name}. 재시도합니다.`, error); - } - } + filesToUpload.append("files", file); } } + + try { + const response = await CommonAxios.post("/files", filesToUpload, { + headers: { + "Content-Type": "multipart/form-data", + }, + }); + + response.data.forEach((file: ApiFile) => { + fileIds.push(String(file.id)); + }); + } catch (error) { + console.error(`파일 업로드에 실패했습니다.`, error); + } + return fileIds; };