From c695b9e7d33e9f385026af250f05d2438916f656 Mon Sep 17 00:00:00 2001 From: leejimqiu Date: Sat, 11 Mar 2023 23:23:42 +0800 Subject: [PATCH 1/2] fix(upload): make size-limit support object --- src/common/utils.ts | 16 ++++++++++++++++ src/upload/upload.ts | 23 +++++++++++++++++++---- 2 files changed, 35 insertions(+), 4 deletions(-) diff --git a/src/common/utils.ts b/src/common/utils.ts index be66a3d5b..a6c2f50f4 100644 --- a/src/common/utils.ts +++ b/src/common/utils.ts @@ -254,3 +254,19 @@ export const calcIcon = (icon: string | Record, defaultIcon?: strin } return null; }; + +export const isOverSize = (size, sizeLimit) => { + if (!sizeLimit) return false; + + const base = 1000; + const unitMap = { + B: 1, + KB: base, + MB: base * base, + GB: base * base * base, + }; + const computedSize = + typeof sizeLimit === 'number' ? sizeLimit * base : sizeLimit?.size * unitMap[sizeLimit?.unit ?? 'KB']; // 单位 KB + + return size > computedSize; +}; diff --git a/src/upload/upload.ts b/src/upload/upload.ts index 809240c6e..6442030db 100644 --- a/src/upload/upload.ts +++ b/src/upload/upload.ts @@ -2,6 +2,7 @@ import { isObject, SuperComponent, wxComponent } from '../common/src/index'; import props from './props'; import { UploadFile } from './type'; import config from '../common/config'; +import { isOverSize } from '../common/utils'; const { prefix } = config; const name = `${prefix}-upload`; @@ -196,10 +197,17 @@ export default class Upload extends SuperComponent { // 支持单/多文件 res.tempFiles.forEach((temp) => { const { size, fileType, tempFilePath, width, height, duration, thumbTempFilePath, ...res } = temp; - if (sizeLimit && size > sizeLimit) { - wx.showToast({ icon: 'none', title: `${fileType === 'image' ? '图片' : '视频'}大小超过限制` }); + + if (isOverSize(size, sizeLimit)) { + let title = `${fileType === 'image' ? '图片' : '视频'}大小超过限制`; + + if (typeof sizeLimit !== 'number') { + title = sizeLimit.message.replace('{sizeLimit}', sizeLimit?.size); + } + wx.showToast({ icon: 'none', title }); return; } + const name = this.getRandFileName(tempFilePath); files.push({ name, @@ -237,10 +245,17 @@ export default class Upload extends SuperComponent { // 支持单/多文件 res.tempFiles.forEach((temp) => { const { size, type: fileType, path: tempFilePath, ...res } = temp; - if (sizeLimit && size > sizeLimit) { - wx.showToast({ icon: 'none', title: `${fileType === 'image' ? '图片' : '视频'}大小超过限制` }); + + if (isOverSize(size, sizeLimit)) { + let title = `${fileType === 'image' ? '图片' : '视频'}大小超过限制`; + + if (typeof sizeLimit !== 'number') { + title = sizeLimit.message.replace('{sizeLimit}', sizeLimit?.size); + } + wx.showToast({ icon: 'none', title }); return; } + const name = this.getRandFileName(tempFilePath); files.push({ name, From 77b95a605b089342113a946cc2b9bf4d6d635265 Mon Sep 17 00:00:00 2001 From: leejimqiu Date: Mon, 13 Mar 2023 10:27:36 +0800 Subject: [PATCH 2/2] test(upload): update --- src/upload/__test__/index.test.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/upload/__test__/index.test.js b/src/upload/__test__/index.test.js index ab2be61fb..5c5389bc4 100644 --- a/src/upload/__test__/index.test.js +++ b/src/upload/__test__/index.test.js @@ -180,7 +180,7 @@ describe('upload', () => { > `, data: { - sizeLimit: 10240, + sizeLimit: 102, }, methods: { handleSelectChange,