小程序pc端图片上传没反应?
手机端一切正常
使用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"
看看是否可以实现图片上传功能。
相关阅读
- wx.chooseMessageFile() 现在支持PC端使用了吗? | 微信开放社区
- vant-weapp/packages/uploader/index.ts at v1.10.19 · youzan/vant-weapp
- vant-weapp/lib/uploader/utils.js at v1.10.19 · youzan/vant-weapp
Edit2
wx.chooseMedia 在文档上显示 maxDuration
属性支持范围是 3 ~ 60
秒,但实际PC端只支持 10
秒以内。但 vant-uploader
组件的 props
下来的 chooseMedia 预设值 设置了 maxDuration
的默认值为 60
了。所以手动绑定 <vant-uploader>
组件的 max-duration
属性值为 10
以内看看能否解决问题,也可以改源码但是不怎么建议。
相关阅读
- wx.chooseMedia一旦设置maxDuration参数,pc端的小程序,无法弹出选择文件的? | 微信开放社区
- vant-weapp/packages/uploader/shared.ts at v1.10.19 · youzan/vant-weapp · GitHub
Edit3
有其他小伙伴反馈在 Mac
平台使用 wx.chooseMedia
这个API会抛出 fail function cannot run on service
这样的异常。但是我这边并没有Mac,所以只能猜测是不是小程序的基础库版本太低 或者 微信客户端没跟新?
同时我也在微信社区刷到了类似的问题,官方回复是:
mac端目前暂不支持此功能。
但是同时文档上显示的,往回找了一下最近的更新历史都没有提什么时候支持的。
所以在没有办法的情况下只能兜底做一下兼容?如果不支持 wx.chooseMedia
就改用 wx.chooseImage,这样也许可以解决问题。
- 经过验证的有效解决办法
- 自己的经验指引,对解决问题有帮助
- 遵循 Markdown 语法排版,代码语义正确
- 询问内容细节或回复楼层
- 与题目无关的内容
- “赞”“顶”“同问”“看手册”“解决了没”等毫无意义的内容