uni-app chooseFile在安卓微信浏览器中选择图片失败
uni-app chooseFile在安卓微信浏览器中选择图片失败
产品分类:
uniapp/H5
PC开发环境操作系统:
Windows
PC开发环境操作系统版本号:
window10
HBuilderX版本号:
3.98
浏览器平台:
微信内置浏览器
浏览器版本:
微信安卓8.0.43
项目创建方式:
CLI
CLI版本号:
3.7.4
示例代码:
function chooseAll(opts) {
console.log("chooseAll", opts);
const { count, extension } = opts;
return new Promise((resolve, reject) => {
let chooseFile = uni.chooseFile;
chooseFile({
type: "all",
count,
extension,
success(res) {
console.log("success", res);
resolve(normalizeChooseAndUploadFileRes(res));
},
fail(res) {
console.log("fail", res);
reject({
errMsg: res.errMsg.replace("chooseFile:fail", ERR_MSG_FAIL)
});
},
complete(res) {
console.log("complete", res);
}
});
});
}
操作步骤:
安卓微信(8.0.43)内置浏览器用chooseFile上传选择文件,左侧类型列表拉到底部,选择图库,选一张图片,结束之后,success和fail函数都没有被触发,IOS微信内置浏览器和安卓APP端QQ浏览器都是正常的
预期结果:
chooseFile能够获取图片返回值
实际结果:
chooseFile不能获取图片返回值
bug描述:
chooseFile在安卓微信(8.0.43)内置浏览器上传选择文件,类型为all,从图库进入,选择完图片,成功和失败回调都没有响应
3 回复
只调用uni.chooseFile会进入正确的回调吗?用vConsole看看有没有什么错误输出
调用uni.chooseFile 正确错误回调都没有进入
在 uni-app
中使用 uni.chooseFile
在安卓微信浏览器中选择图片失败,可能是由于微信浏览器的一些限制或兼容性问题。以下是一些可能的原因和解决方案:
1. 微信浏览器限制
- 微信浏览器对某些 API 的支持可能不完全,尤其是在安卓设备上。
uni.chooseFile
在某些版本的微信浏览器中可能无法正常工作。
2. 权限问题
- 确保你的应用在安卓设备上具有访问相册和文件的权限。如果没有权限,
uni.chooseFile
将无法正常工作。
3. 微信版本问题
- 确保微信版本是最新的,旧版本的微信可能存在兼容性问题。
4. 使用 uni.chooseImage
替代
- 如果你只需要选择图片,可以尝试使用
uni.chooseImage
替代uni.chooseFile
。uni.chooseImage
是专门用于选择图片的 API,可能在微信浏览器中表现更好。
uni.chooseImage({
count: 1, // 默认9
sizeType: ['original', 'compressed'], // 可以指定是原图还是压缩图,默认二者都有
sourceType: ['album', 'camera'], // 可以指定来源是相册还是相机,默认二者都有
success: function (res) {
const tempFilePaths = res.tempFilePaths;
// 处理选中的图片
},
fail: function (err) {
console.log('选择图片失败', err);
}
});
5. 使用 input
标签
- 如果
uni.chooseFile
和uni.chooseImage
都无法正常工作,可以尝试使用原生的<input type="file">
标签来选择文件。
<input type="file" accept="image/*" [@change](/user/change)="handleFileChange" />
methods: {
handleFileChange(event) {
const file = event.target.files[0];
if (file) {
// 处理选中的文件
}
}
}
6. 检查微信开发者工具
- 如果你在微信开发者工具中测试,确保开发者工具的版本是最新的,并且模拟器设置正确。
7. 调试和日志
- 在
uni.chooseFile
的fail
回调中打印错误信息,以便更好地了解失败的原因。
uni.chooseFile({
count: 1,
success: function (res) {
const tempFilePaths = res.tempFilePaths;
// 处理选中的文件
},
fail: function (err) {
console.error('选择文件失败', err);
}
});