uni-app chooseFile在安卓微信浏览器中选择图片失败

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

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,从图库进入,选择完图片,成功和失败回调都没有响应

image


3 回复

只调用uni.chooseFile会进入正确的回调吗?用vConsole看看有没有什么错误输出


调用uni.chooseFile 正确错误回调都没有进入

uni-app 中使用 uni.chooseFile 在安卓微信浏览器中选择图片失败,可能是由于微信浏览器的一些限制或兼容性问题。以下是一些可能的原因和解决方案:

1. 微信浏览器限制

  • 微信浏览器对某些 API 的支持可能不完全,尤其是在安卓设备上。uni.chooseFile 在某些版本的微信浏览器中可能无法正常工作。

2. 权限问题

  • 确保你的应用在安卓设备上具有访问相册和文件的权限。如果没有权限,uni.chooseFile 将无法正常工作。

3. 微信版本问题

  • 确保微信版本是最新的,旧版本的微信可能存在兼容性问题。

4. 使用 uni.chooseImage 替代

  • 如果你只需要选择图片,可以尝试使用 uni.chooseImage 替代 uni.chooseFileuni.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.chooseFileuni.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.chooseFilefail 回调中打印错误信息,以便更好地了解失败的原因。
uni.chooseFile({
    count: 1,
    success: function (res) {
        const tempFilePaths = res.tempFilePaths;
        // 处理选中的文件
    },
    fail: function (err) {
        console.error('选择文件失败', err);
    }
});
回到顶部
AI 助手
你好,我是IT营的 AI 助手
您可以尝试点击下方的快捷入口开启体验!