小程序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 语法排版,代码语义正确
- 询问内容细节或回复楼层
- 与题目无关的内容
- “赞”“顶”“同问”“看手册”“解决了没”等毫无意义的内容