From 46418006765c92e46ccd8a92ca5c337fdf498c64 Mon Sep 17 00:00:00 2001 From: khj0414 Date: Fri, 7 Mar 2025 13:19:19 +0900 Subject: [PATCH] =?UTF-8?q?=EC=88=98=EC=A0=95=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/components/editor/QEditor.vue | 46 +++++++++++++++++++++------ src/components/wordDict/DictWrite.vue | 32 +++++++++++++++---- src/views/wordDict/wordDict.vue | 6 ++-- 3 files changed, 67 insertions(+), 17 deletions(-) diff --git a/src/components/editor/QEditor.vue b/src/components/editor/QEditor.vue index 37ec2dd..ed4da81 100644 --- a/src/components/editor/QEditor.vue +++ b/src/components/editor/QEditor.vue @@ -125,7 +125,6 @@ // 에디터의 텍스트가 변경될 때마다 이미지 처리 quillInstance.on('text-change', (delta, oldDelta, source) => { - emit('update:data', quillInstance.getContents()); delta.ops.forEach(op => { if (op.insert && typeof op.insert === 'object' && op.insert.image) { const imageUrl = op.insert.image; // 이미지 URL 추출 @@ -134,7 +133,9 @@ checkForDeletedImages(); // 삭제된 이미지 확인 } }); + emit('update:data', quillInstance.getContents()); }); + // 로컬 이미지 파일 선택 async function selectLocalImage() { const input = document.createElement('input'); @@ -164,17 +165,43 @@ } }; } + // 이미지 서버 업로드 async function uploadImageToServer(formData) { - try { - const response = await $api.post('quilleditor/upload', formData, { isFormData: true }); - const imageUrl = response.data.data; - return imageUrl; // 서버에서 받은 이미지 URL 반환 - } catch (error) { - toastStore.onToast('잠시후 다시 시도해주세요.', 'e'); - throw error; - } + try { + // Make the POST request to upload the image + const response = await $api.post('quilleditor/upload', formData, { isFormData: true }); + + // Check if the response contains the expected data + if (response.data && response.data.data) { + const imageUrl = response.data.data; + return imageUrl; // Return the image URL received from the server + } else { + throw new Error('Image URL not returned from server'); } + } catch (error) { + // Log detailed error information for debugging purposes + console.error('Image upload failed:', error); + + // Handle specific error cases (e.g., network issues, authorization issues) + if (error.response) { + // If the error is from the server (e.g., 4xx or 5xx error) + console.error('Error response:', error.response.data); + toastStore.onToast('서버 오류가 발생했습니다. 잠시 후 다시 시도해주세요.', 'e'); + } else if (error.request) { + // If no response is received from the server + console.error('No response received:', error.request); + toastStore.onToast('네트워크 오류가 발생했습니다. 잠시 후 다시 시도해주세요.', 'e'); + } else { + // If the error is due to something else (e.g., invalid request setup) + console.error('Error message:', error.message); + toastStore.onToast('파일 업로드 중 문제가 발생했습니다. 다시 시도해주세요.', 'e'); + } + + // Throw the error so the caller knows something went wrong + throw error; + } +} // 삭제된 이미지 확인 function checkForDeletedImages() { @@ -189,6 +216,7 @@ } }); +