From 4677982c003e357cff8f2544be44706bf31ea6de Mon Sep 17 00:00:00 2001
From: king <18310653075@163.com>
Date: 星期四, 05 五月 2022 19:12:19 +0800
Subject: [PATCH] 2022-05-05

---
 src/tabviews/zshare/fileupload/index.jsx |  111 +++++++++++++++++++++++++++++++++++--------------------
 1 files changed, 70 insertions(+), 41 deletions(-)

diff --git a/src/tabviews/zshare/fileupload/index.jsx b/src/tabviews/zshare/fileupload/index.jsx
index 1e71103..5148154 100644
--- a/src/tabviews/zshare/fileupload/index.jsx
+++ b/src/tabviews/zshare/fileupload/index.jsx
@@ -39,28 +39,42 @@
 
     let filelist = []
     if (config.initval) {
-      try {
-        filelist = config.initval.split(',').map((url, index) => {
-          return {
-            uid: `${index}`,
-            name: url.slice(url.lastIndexOf('/') + 1),
-            status: 'done',
-            url: url,
-            origin: true
-          }
-        })
-      } catch (e) {
-        filelist = []
+      if (/^data:image/.test(config.initval)) {
+        filelist = [{
+          uid: '0',
+          name: 'data:image/jpeg;base64',
+          status: 'done',
+          url: config.initval,
+          origin: true
+        }]
+      } else {
+        try {
+          filelist = config.initval.split(',').map((url, index) => {
+            return {
+              uid: `${index}`,
+              name: url.slice(url.lastIndexOf('/') + 1),
+              status: 'done',
+              url: url,
+              origin: true
+            }
+          })
+        } catch (e) {
+          filelist = []
+        }
       }
     }
 
     let accept = ''
     let accepts = null
     let compress = false
-    if (config.compress === 'true') {
+    let maxFile = config.maxfile && config.maxfile > 0 ? config.maxfile : null
+    if (config.compress === 'true' || config.compress === 'base64') {
       compress = true
       accepts = ['.jpg', '.png', '.gif', '.jpeg']
       accept = accepts.join(',')
+      if (config.compress === 'base64') {
+        maxFile = 1
+      }
     } else if (config.suffix) {
       accepts = config.suffix.split(',').map(item => {
         if (!/^\./ig.test(item)) {
@@ -83,7 +97,7 @@
       filelist,
       compress,
       limit: config.limit || 2,
-      maxFile: config.maxfile && config.maxfile > 0 ? config.maxfile : null,
+      maxFile: maxFile,
       fileType: config.fileType || 'text'
     })
   }
@@ -281,34 +295,49 @@
 
           let param = {Base64Img: cvs.toDataURL('image/jpeg', compressRate)}
 
-          if (rduri) {
-            param.rduri = rduri
-          }
-
-          Api.fileuploadbase64(param).then(result => {
-            if (result.status && result.Images) {
-              let url = service + result.Images
-
-              if (rduri) {
-                url = rduri.replace(/webapi(.*)$/, '') + result.Images
-              }
-
-              this.onUpdate(url)
-
-              this.setState({
-                percent: 100
-              }, () => {
-                setTimeout(() => {
-                  this.setState({
-                    showprogress: false,
-                    percent: 0
-                  })
-                }, 200)
-              })
-            } else {
-              this.onFail(result.message)
+          if (this.props.config.compress === 'base64') {
+            this.onUpdate(param.Base64Img)
+  
+            this.setState({
+              percent: 100
+            }, () => {
+              setTimeout(() => {
+                this.setState({
+                  showprogress: false,
+                  percent: 0
+                })
+              }, 200)
+            })
+          } else {
+            if (rduri) {
+              param.rduri = rduri
             }
-          })
+  
+            Api.fileuploadbase64(param).then(result => {
+              if (result.status && result.Images) {
+                let url = service + result.Images
+  
+                if (rduri) {
+                  url = rduri.replace(/webapi(.*)$/, '') + result.Images
+                }
+  
+                this.onUpdate(url)
+  
+                this.setState({
+                  percent: 100
+                }, () => {
+                  setTimeout(() => {
+                    this.setState({
+                      showprogress: false,
+                      percent: 0
+                    })
+                  }, 200)
+                })
+              } else {
+                this.onFail(result.message)
+              }
+            })
+          }
         }
 
         img.onerror = () => {

--
Gitblit v1.8.0