蛋炒太阳
蛋炒太阳
  • 发布:2021-12-13 15:31
  • 更新:2021-12-27 13:49
  • 阅读:1200

【报Bug】chooseVideo、chooseImage、chooseFile

分类:uni-app

产品分类: uniapp/H5

PC开发环境操作系统: Windows

PC开发环境操作系统版本号: win10

HBuilderX类型: 正式

HBuilderX版本号: 3.2.16

浏览器平台: Chrome

浏览器版本: 所有浏览器所有版本

项目创建方式: HBuilderX

示例代码:

uni.chooseFile({
success(res) {
console.log(res);
},
fail(err) {
console.log(err);
}
})

操作步骤:

uni.chooseFile({
success(res) {
console.log(res);
},
fail(err) {
console.log(err);
}
})
正常调用

预期结果:

能够正常选择或录制

实际结果:

报错 { errMsg: "chooseFile:fail 文件选择器对话框只能在用户激活时显示" }

bug描述:

所有浏览器所有版本
chooseVideo、chooseImage、chooseFile

uni.chooseFile({  
                success(res) {  
                    console.log(res);  
                },  
                fail(err) {  
                    console.log(err);  
                }  
            })

都会返回以下错误信息,导致应用无法使用
{ errMsg: "chooseFile:fail 文件选择器对话框只能在用户激活时显示" }

2021-12-13 15:31 负责人:无 分享
已邀请:
2***@qq.com

2***@qq.com

chooseImage我刚才在谷歌浏览器上试了下,win10系统,没啥问题

  • 蛋炒太阳 (作者)

    我的有问题,我切换版本都不行,手机上,windows上都有问题

    2021-12-13 15:46

  • 蛋炒太阳 (作者)

    3.2.16 和 3.2.15都不行

    2021-12-13 15:47

  • 2***@qq.com

    回复 蛋炒太阳: 之前可以用吗?

    2021-12-13 15:51

2***@qq.com

2***@qq.com

这我刚上传的

k***@163.com

k***@163.com

把uni.chooseFile放到mouseup的回调函数中调用,这样可以绕过uni内部检测机制,可以异步调用chooseVideo、chooseImage、chooseFile。
只在HBuilderX 3.2.16中进行了测试。因为项目中目前只能在异步回调中调用chooseImage这些接口,如果要改造成同步调用,改造起来比较麻烦,所以使用了下面的代码workaround了一下。

        invoke(func) {  
            const mock = new MouseEvent('mouseup')  
            const callback = ()=>{  
                func()  
                document.removeEventListener('mouseup', callback )  
            }  
            document.addEventListener('mouseup', callback )  
            document.dispatchEvent(mock)  
        },  
        chooseFile(success, fail) {  
            this.invoke(()=>{  
                uni.chooseFile({  
                    success,    
                    fail  
                })  
            })  
        },
  • 蛋炒太阳 (作者)

    哈,这个可以试试哈?这两天验证一下

    2021-12-29 10:17

该问题目前已经被锁定, 无法添加新回复