This is an automated email from the ASF dual-hosted git repository.

hefengen pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/shenyu-dashboard.git


The following commit(s) were added to refs/heads/master by this push:
     new b3f610db fix upload bug (#378)
b3f610db is described below

commit b3f610dbb8a06d0d9c50a251196850c9b0fe2007
Author: Misaya295 <[email protected]>
AuthorDate: Fri Dec 8 09:38:50 2023 +0800

    fix upload bug (#378)
    
    Co-authored-by: chenwk <[email protected]>
---
 src/services/api.js | 44 +++++++++++++++++++++++++++++++++++---------
 1 file changed, 35 insertions(+), 9 deletions(-)

diff --git a/src/services/api.js b/src/services/api.js
index 983b6e8d..50b12205 100644
--- a/src/services/api.js
+++ b/src/services/api.js
@@ -172,19 +172,41 @@ export async function findUser(params) {
 
 /* addPlugin */
 export async function addPlugin(params) {
-  const formData = new FormData;
-  formData.append("name",params.name);
-  if(params.config) formData.append("config",params.config);
-  formData.append("sort",params.sort);
-  formData.append("role",params.role);
-  formData.append("enabled",params.enabled);
-  if(params.file) formData.append("file",params.file);
+  const formData = new FormData();
+  formData.append("name", params.name);
+  if (params.config) formData.append("config", params.config);
+  formData.append("sort", params.sort);
+  formData.append("role", params.role);
+  formData.append("enabled", params.enabled);
+  if (params.file && typeof  params.file === 'object') {
+    const base64Data = await readFileAsBase64(params.file);
+    formData.append("file", base64Data);
+  }
+  if(params.file) formData.append("file", params.file);
+
   return request(`${baseUrl}/plugin`, {
     method: `POST`,
     body: formData,
   });
 }
 
+function readFileAsBase64(file) {
+  return new Promise((resolve, reject) => {
+    const reader = new FileReader();
+
+    reader.onload = (event) => {
+      const base64String = event.target.result.split(",")[1];
+      resolve(base64String);
+    };
+
+    reader.onerror = (error) => {
+      reject(error);
+    };
+
+    reader.readAsDataURL(file);
+  });
+}
+
 /* deletePlugin */
 export async function deletePlugin(params) {
   return request(`${baseUrl}/plugin/batch`, {
@@ -202,7 +224,11 @@ export async function updatePlugin(params) {
   formData.append("sort",params.sort);
   formData.append("role",params.role);
   formData.append("enabled",params.enabled);
-  if(params.file) formData.append("file",params.file);
+  if (params.file && typeof  params.file === 'object') {
+    const base64Data = await readFileAsBase64(params.file);
+    formData.append("file", base64Data);
+  }
+  if(params.file) formData.append("file", params.file);
   return request(`${baseUrl}/plugin/${params.id}`, {
 
     method: `PUT`,
@@ -1047,4 +1073,4 @@ export function fetchAlertReport(params) {
       ...params
     }
   });
-}
\ No newline at end of file
+}

Reply via email to