手机端一切正常
使用Vant Weapp组件库(版本:"@vant/weapp": "^1.10.18")
点击上传按钮,没反应,不输出11111111111111
点击删除,成功输出222222222
**
补充····································································**
我看了一下源码中的uploader组件的accept属性默认是image,所以默认调用的是wx.chooseMedia,
我输出一下报错信息,在pc端调用上传就会报以下这个错:
再输出了一下源码中wx.chooseMedia的配置maxDuration(拍摄视频最长拍摄时间,单位秒。时间范围为 3s 至 60s 之间。不限制相册)的值:
去微信开放社区查看相应报错提问发现:
看看
before-read
绑定的函数上做了什么业务处理。可能是没有通过before-read
绑定的函数。Edit
看了一下
VantWeapp
的uploader
组件源码, 调用的是 chooseMedia 和 chooseMessageFile 的两个微信 API。如果没有指定
accept
属性的话,默认调用的是wx.chooseMessageFile
这个API,但是微信PC端暂时还不支持这个API,不过wx.chooseMedia
这个API是支持的,所以指定一下accept="image"
看看是否可以实现图片上传功能。相关阅读
Edit2
wx.chooseMedia 在文档上显示
maxDuration
属性支持范围是3 ~ 60
秒,但实际PC端只支持10
秒以内。但
vant-uploader
组件的props
下来的 chooseMedia 预设值 设置了maxDuration
的默认值为60
了。所以手动绑定
<vant-uploader>
组件的max-duration
属性值为10
以内看看能否解决问题,也可以改源码但是不怎么建议。相关阅读
Edit3
有其他小伙伴反馈在
Mac
平台使用wx.chooseMedia
这个API会抛出fail function cannot run on service
这样的异常。但是我这边并没有Mac,所以只能猜测是不是小程序的基础库版本太低 或者 微信客户端没跟新?
同时我也在微信社区刷到了类似的问题,官方回复是:
但是同时文档上显示的,往回找了一下最近的更新历史都没有提什么时候支持的。
所以在没有办法的情况下只能兜底做一下兼容?如果不支持
wx.chooseMedia
就改用 wx.chooseImage,这样也许可以解决问题。相关阅读
chooseMedia在MAC系统中无法使用? | 微信开放社区