From 1e61215b48e59e94c1ed98e4ef956227d689d6bc Mon Sep 17 00:00:00 2001
From: quanyawei <401863037@qq.com>
Date: Mon, 06 Nov 2023 08:48:39 +0800
Subject: [PATCH] fix:小程序订阅消息

---
 uni_modules/uview-ui/components/u-upload/utils.js |  151 ++++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 151 insertions(+), 0 deletions(-)

diff --git a/uni_modules/uview-ui/components/u-upload/utils.js b/uni_modules/uview-ui/components/u-upload/utils.js
new file mode 100644
index 0000000..88cb602
--- /dev/null
+++ b/uni_modules/uview-ui/components/u-upload/utils.js
@@ -0,0 +1,151 @@
+function pickExclude(obj, keys) {
+	// ������������������type������������
+    if (!['[object Object]', '[object File]'].includes(Object.prototype.toString.call(obj))) {
+        return {}
+    }
+    return Object.keys(obj).reduce((prev, key) => {
+        if (!keys.includes(key)) {
+            prev[key] = obj[key]
+        }
+        return prev
+    }, {})
+}
+
+function formatImage(res) {
+    return res.tempFiles.map((item) => ({
+        ...pickExclude(item, ['path']),
+        type: 'image',
+        url: item.path,
+        thumb: item.path,
+		size: item.size,
+		// #ifdef H5
+		name: item.name
+		// #endif
+    }))
+}
+
+function formatVideo(res) {
+    return [
+        {
+            ...pickExclude(res, ['tempFilePath', 'thumbTempFilePath', 'errMsg']),
+            type: 'video',
+            url: res.tempFilePath,
+            thumb: res.thumbTempFilePath,
+			size: res.size,
+			// #ifdef H5
+			name: res.name
+			// #endif
+        }
+    ]
+}
+
+function formatMedia(res) {
+    return res.tempFiles.map((item) => ({
+        ...pickExclude(item, ['fileType', 'thumbTempFilePath', 'tempFilePath']),
+        type: res.type,
+        url: item.tempFilePath,
+        thumb: res.type === 'video' ? item.thumbTempFilePath : item.tempFilePath,
+		size: item.size
+    }))
+}
+
+function formatFile(res) {
+    return res.tempFiles.map((item) => ({ 
+		...pickExclude(item, ['path']), 
+		url: item.path, 
+		size:item.size,
+		// #ifdef H5
+		name: item.name,
+		type: item.type
+		// #endif 
+	}))
+}
+export function chooseFile({
+    accept,
+    multiple,
+    capture,
+    compressed,
+    maxDuration,
+    sizeType,
+    camera,
+    maxCount
+}) {
+    return new Promise((resolve, reject) => {
+        switch (accept) {
+        case 'image':
+            uni.chooseImage({
+                count: multiple ? Math.min(maxCount, 9) : 1,
+                sourceType: capture,
+                sizeType,
+                success: (res) => resolve(formatImage(res)),
+                fail: reject
+            })
+            break
+            // #ifdef MP-WEIXIN
+            // ������������������������������chooseMedia������
+        case 'media':
+            wx.chooseMedia({
+                count: multiple ? Math.min(maxCount, 9) : 1,
+                sourceType: capture,
+                maxDuration,
+                sizeType,
+                camera,
+                success: (res) => resolve(formatMedia(res)),
+                fail: reject
+            })
+            break
+            // #endif
+        case 'video':
+            uni.chooseVideo({
+                sourceType: capture,
+                compressed,
+                maxDuration,
+                camera,
+                success: (res) => resolve(formatVideo(res)),
+                fail: reject
+            })
+            break
+            // #ifdef MP-WEIXIN || H5
+            // ������������������������������chooseMessageFile������
+        case 'file':
+            // #ifdef MP-WEIXIN
+            wx.chooseMessageFile({
+                count: multiple ? maxCount : 1,
+                type: accept,
+                success: (res) => resolve(formatFile(res)),
+                fail: reject
+            })
+            // #endif
+            // #ifdef H5
+            // ������hx2.9.9���������������uni.chooseFile
+            uni.chooseFile({
+                count: multiple ? maxCount : 1,
+                type: accept,
+                success: (res) => resolve(formatFile(res)),
+                fail: reject
+            })
+            // #endif
+            break
+				// #endif
+		default: 
+			// ������������������������accept���������������������������������������������������
+			// #ifdef MP-WEIXIN
+			wx.chooseMessageFile({
+			    count: multiple ? maxCount : 1,
+			    type: 'all',
+			    success: (res) => resolve(formatFile(res)),
+			    fail: reject
+			})
+			// #endif
+			// #ifdef H5
+			// ������hx2.9.9���������������uni.chooseFile
+			uni.chooseFile({
+				count: multiple ? maxCount : 1,
+				type: 'all',
+				success: (res) => resolve(formatFile(res)),
+				fail: reject
+			})
+			// #endif
+        }
+    })
+}

--
Gitblit v1.8.0