From 113541f9999f45540cf47feba0305dba312ef555 Mon Sep 17 00:00:00 2001 From: liuzaijiang <530604689@qq.com> Date: Fri, 28 Apr 2023 10:26:47 +0800 Subject: [PATCH] fix(comp:upload): accept does not ignore case --- .../components/upload/src/util/fileHandle.ts | 32 +++++++++---------- 1 file changed, 16 insertions(+), 16 deletions(-) diff --git a/packages/components/upload/src/util/fileHandle.ts b/packages/components/upload/src/util/fileHandle.ts index 94b4fb2eb..35c2580d6 100644 --- a/packages/components/upload/src/util/fileHandle.ts +++ b/packages/components/upload/src/util/fileHandle.ts @@ -47,22 +47,22 @@ export function getFilesAcceptAllow(filesSelected: File[], accept?: string[]): F if (!accept || accept.length === 0) { return filesSelected } - return filesSelected.filter(file => { - const extension = file.name.indexOf('.') > -1 ? `.${file.name.split('.').pop()}` : '' - const baseType = file.type.replace(/\/.*$/, '') - return accept.some(type => { - if (type.startsWith('.')) { - return extension === type - } - if (/\/\*$/.test(type)) { - return baseType === type.replace(/\/\*$/, '') - } - if (/^[^/]+\/[^/]+$/.test(type)) { - return file.type === type - } - return false - }) - }) + const isMatch = (file: File, type: string) => { + const ext = `.${file.name.split('.').pop()}`.toLowerCase() + const baseType = file.type.replace(/\/.*$/, '').toLowerCase() + const _type = type.toLowerCase() + if (_type.startsWith('.')) { + return ext === _type + } + if (/\/\*$/.test(_type)) { + return baseType === _type.replace(/\/\*$/, '') + } + if (/^[^/]+\/[^/]+$/.test(_type)) { + return file.type.toLowerCase() === _type + } + return false + } + return filesSelected.filter(file => accept.some(type => isMatch(file, type))) } export function getFilesCountAllow(filesSelected: File[], curFilesCount: number, maxCount?: number): File[] {