uni-app uni.chooseFile当选中两个及以上文件时 在微信内置浏览器中无效

发布于 1周前 作者 sinazl 来自 Uni-App

uni-app uni.chooseFile当选中两个及以上文件时 在微信内置浏览器中无效

示例代码:

uni.chooseFile({
count: 9,
type:'all',
success: (res) =>{
console.log(res);
},
fail: (err) => {
console.log(err);
},
complete: (res) => {
console.log(res);
}
});

操作步骤:

微信内置浏览器访问地址,点击“添加文件”,弹出文件管理器,选中两个及以上文件,点击“选择”

预期结果:

回调函数能正确返回文件信息

实际结果:

success、fail、complete均未调用

bug描述:

uni.chooseFile 当选中两个及以上文件时,success、fail、complete均未调用。选择一个文件是正常的。


4 回复

解决了没?


uni-app 中使用 uni.chooseFile 方法时,如果在微信内置浏览器中选中两个及以上文件时无效,可能是由于微信内置浏览器的限制或 uni-app 的兼容性问题。以下是一些可能的解决方案和排查步骤:

1. 检查微信版本

确保微信版本是最新的,旧版本的微信内置浏览器可能存在一些兼容性问题。

2. 检查 uni.chooseFile 的参数

确保你正确使用了 uni.chooseFile 方法,并且参数设置正确。例如:

uni.chooseFile({
  count: 2, // 允许选择的最大文件数量
  success(res) {
    console.log(res.tempFiles); // 选中的文件列表
  },
  fail(err) {
    console.error(err);
  }
});

3. 检查微信内置浏览器的限制

微信内置浏览器可能对文件选择有一些限制,例如文件数量、文件大小等。你可以尝试减少文件数量或文件大小,看看问题是否依然存在。

4. 使用 wx.chooseMessageFile(仅限微信小程序)

如果你在微信小程序环境中,可以尝试使用 wx.chooseMessageFile 方法,它可能对文件选择有更好的支持。

wx.chooseMessageFile({
  count: 2, // 允许选择的最大文件数量
  success(res) {
    console.log(res.tempFiles); // 选中的文件列表
  },
  fail(err) {
    console.error(err);
  }
});

5. 使用 input 标签

如果 uni.chooseFile 在微信内置浏览器中无法正常工作,你可以尝试使用原生的 <input type="file"> 标签来实现文件选择功能。

<input type="file" multiple @change="handleFileChange" />
methods: {
  handleFileChange(event) {
    const files = event.target.files;
    console.log(files); // 选中的文件列表
  }
}

6. 反馈给 uni-app 官方

如果以上方法都无法解决问题,建议将问题反馈给 uni-app 官方,可能是 uni-app 的 bug 或兼容性问题。

7. 使用其他文件选择库

如果 uni.chooseFile 在微信内置浏览器中无法满足需求,可以考虑使用其他第三方文件选择库,例如 FilePondUppy

8. 检查网络环境

有时网络环境也可能影响文件选择功能,确保在良好的网络环境下进行测试。

9. 检查微信开发者工具

如果你在微信开发者工具中测试,确保开发者工具是最新版本,并且模拟器设置正确。

10. 使用 uni.chooseImage 替代

如果文件选择功能仅用于图片,可以尝试使用 uni.chooseImage 方法,它可能对图片选择有更好的支持。

uni.chooseImage({
  count: 2, // 允许选择的最大图片数量
  success(res) {
    console.log(res.tempFilePaths); // 选中的图片路径列表
  },
  fail(err) {
    console.error(err);
  }
});
回到顶部
AI 助手
你好,我是IT营的 AI 助手
您可以尝试点击下方的快捷入口开启体验!