问题
uni-file-picker组件设置limit为10,但是当选择了9个文件后,再选择,会提示“您最多选择9个文件”,无法选择9个以上的文件。
原因
找到uni-file-picker的源码你会发现:
limitLength() {
if (this.returnType === 'object') {
return 1
}
if (!this.limit) {
return 1
}
if (this.limit >= 9) {
return 9
}
return this.limit
}
limit做了限制,大于9会直接限制为9
解决
既然找到了问题那就好办了
解决方法一:直接将node-modules中限制的那几行源码注释,亲测有效,但是这个方法太粗暴了,而且只能在你的环境生效,别人要开发的话那他也得注释他本地node-modules中的那块代码。
路径:@dcloudio+uni-ui@1.4.27/node_modules/@dcloudio/uni-ui/lib/uni-file-picker/uni-file-picker.vue
limitLength() {
if (this.returnType === 'object') {
return 1
}
if (!this.limit) {
return 1
}
// if (this.limit >= 9) { /**
// return 9 * 注释这几行
// } */
return this.limit
}
解决方法二(推荐):将uni-file-picker组件的源码全部拷贝出来,作为一个自定义组件使用。
<template>
<cus-uni-file-picker
ref="uploader"
:value="modelValue"
:limit="limit"
:limit-length="10"
:auto-upload="false"
file-mediatype="all"
file-extname="jpg,png,bmp,jpeg,pdf"
>
<view class="upload">
<uni-icons type="plusempty" size="35" color="#aeaeae"></uni-icons>
</view>
</cus-uni-file-picker>
</template>
<script setup lang="ts">
import cusUniFilePicker from '@/components/CusFilePicker/uni-file-picker.vue'
</script>