From 6117805467d0055a9f39ef8af6b2ccacb44bf6cc Mon Sep 17 00:00:00 2001 From: rishalkv Date: Wed, 13 May 2026 17:16:25 +0530 Subject: [PATCH] fix:blog editor image upload --- frontend/src/pages/BlogEditor.tsx | 41 +++++++++++++++++++++++++++---- 1 file changed, 36 insertions(+), 5 deletions(-) diff --git a/frontend/src/pages/BlogEditor.tsx b/frontend/src/pages/BlogEditor.tsx index 142fa78..51b5015 100644 --- a/frontend/src/pages/BlogEditor.tsx +++ b/frontend/src/pages/BlogEditor.tsx @@ -10,6 +10,7 @@ import Table from "@editorjs/table"; import CodeTool from "@editorjs/code"; import Embed from "@editorjs/embed"; import Delimiter from "@editorjs/delimiter"; +import axios from "axios"; import { createBlogApi, @@ -23,6 +24,7 @@ import {Input} from "@/components/ui/input"; import {Button} from "@/components/ui/button"; export default function BlogEditorPage() { + const baseURL = import.meta.env.VITE_API_URL; const {id} = useParams(); const navigate = useNavigate(); @@ -79,12 +81,41 @@ export default function BlogEditorPage() { config: { uploader: { uploadByFile: async (file: File) => { - const res = await uploadImageApi(file); + if (file.size > 5 * 1024 * 1024) { + alert("File is too large (Max 5MB)"); + return {success: 0, file: {url: ""}}; + } - return { - success: 1, - file: {url: res.file.url}, - }; + const formData = new FormData(); + formData.append("file", file); + formData.append("folderPath", "/blog"); + + try { + const response = await axios.post( + `${baseURL}/upload`, + formData, + { + headers: { + "Content-Type": "multipart/form-data", + }, + }, + ); + + return { + success: 1, + file: {url: response.data.fileUrl}, + }; + } catch (e: any) { + console.error("EditorJS Image Upload Error:", e); + const errorMessage = + e.response?.data?.error || e.message || "Upload failed"; + alert(`Upload Error: ${errorMessage}`); + + return { + success: 0, + file: {url: ""}, + }; + } }, }, },