- 当前 Bug 的表现
使用 wx.chooseMessageFile 并将 extension 参数 指定为 extension: ['doc', 'ppx', 'xls', 'xlsx', 'docx', 'pdf', 'pptx'],
然后从微信文件选择一个文件名如:5d254206147ee.dOC的文件, ios 端 可正常选到该文件(能筛选), Android端 选不到该文件(不能筛选)
- 预期表现
Android端 使用 该参数 extension: ['doc', 'ppx', 'xls', 'xlsx', 'docx', 'pdf', 'pptx'], 能选取到 类似 .dOC,.DOC,.doC,Doc 的文件
- 复现路径
无
- 提供一个最简复现 Demo
wx.chooseMessageFile({
count: 1,
type: 'file',
extension: ['doc', 'ppx', 'xls', 'xlsx', 'docx', 'pdf', 'pptx'],
success (result) {
const tempFilePaths = result.tempFiles
if (tempFilePaths.length > 0) {
// 选择文件成功
})
} else {
// 选择文件失败
}
}
})
偶然翻出这个问题,发现有人遇到同样问题。
自己当时写码先兼容了。。。这么久了,不知道官方有没有修复,
现把兼容代码放出来,需要的可以参考
// 打开微信客户端 wechatClick () { let ex = ['doc', 'ppt', 'xls', 'xlsx', 'docx', 'pdf', 'pptx'] console.log(ex) let extension = [] ex.map((v, i) => { extension = extension.concat(ebGenAdc(v)) }) console.log(extension) Taro.chooseMessageFile({ count: 1, type: 'file', extension: extension, success (result) { console.log(result) } }) } /** * * @param str * @returns {Array} */ const ebGenAdc = (str) => { let guide = str.split(/([a-zA-Z]+)/).filter(x => !!x).map(x => /^[a-zA-Z]+$/.test(x) ? [x.length, true] : [x.length, false]) let length = guide.reduce((result, current) => result + (current[1] ? current[0] : 0), 0) let result = [] for (let i = 2 ** length; i--;) { let bin = i.toString(2) bin = Array.from('0'.repeat(length - bin.length) + bin) for (let i = 0; i < guide.length; i++) { if (!guide[i][1]) { let index = 0 for (let j = 0; j < i; j++) { index += guide[j][0] } bin.splice(index, 0, ...'0'.repeat(guide[i][0]).split('')) } } for (let i = str.length; i--;) { if (Number(bin[i])) { bin[i] = str[i].toUpperCase() } else { bin[i] = str[i].toLowerCase() } } result.push(bin.join('')) } return result }
遇到楼主同样的问题,微信版本7.0.6,一加5,安卓9
// 打开微信客户端
wechatClick () {
let ex = ['doc', 'ppt', 'xls', 'xlsx', 'docx', 'pdf', 'pptx']
console.log(ex)
let extension = []
ex.map((v, i) => {
extension = extension.concat(ebGenAdc(v))
})
console.log(extension)
Taro.chooseMessageFile({
count: 1,
type: 'file',
extension: extension,
success (result) {
console.log(result)
}
})
}
/**
*
* @param str
* @returns {Array}
*/
const ebGenAdc = (str) => {
let guide = str.split(/([a-zA-Z]+)/).filter(x => !!x).map(x => /^[a-zA-Z]+$/.test(x) ? [x.length, true] : [x.length, false])
let length = guide.reduce((result, current) => result + (current[1] ? current[0] : 0), 0)
let result = []
for (let i = 2 ** length; i--;) {
let bin = i.toString(2)
bin = Array.from('0'.repeat(length - bin.length) + bin)
麻烦提供出现问题的具体机型、微信版本号、系统版本号,以及能复现问题的代码片段(https://developers.weixin.qq.com/miniprogram/dev/devtools/minicode.html)