youzan / vant-weapp

轻量、可靠的小程序 UI 组件库
https://vant.pro/vant-weapp/
MIT License
17.73k stars 3.48k forks source link

uploader在PC小程序无法使用 #5438

Closed mazi233 closed 1 year ago

mazi233 commented 1 year ago

重现链接

image image

Vant Weapp 版本

1.10.19

描述一下你遇到的问题。

点击没有弹出选择文件弹框

重现步骤

1.点击 2.无事发生

设备/浏览器

PC小程序

johnsonwong666 commented 1 year ago
image image

试了一下示例代码,可以正常弹出,会不会基础库之类的有问题?

mazi233 commented 1 year ago

并不是开发者工具 而是 PC小程序

mazi233 commented 1 year ago

image image 试了一下示例代码,可以正常弹出,会不会基础库之类的有问题?

预览PC端小程序就不行

johnsonwong666 commented 1 year ago
image

我是mac操作系统的。试了下也正常弹出

mazi233 commented 1 year ago

OSX10.13有问题,还有个用户具体什么操作系统就不清楚了 反正也不行

ruchengwang commented 1 year ago

我的也是这个问题,PC版微信点击上传无反应!求解决方法

lanmao139 commented 1 year ago

是有这个问题,pc端点击无反应。

ruchengwang commented 1 year ago

官方怎么不回复呢

johnsonwong666 commented 1 year ago

提供一个复现代码来看一下。或者可以找到这块对应的源码调试一下微信API回调是否正常,welcome PR。

ruchengwang commented 1 year ago

//申请人图片上传预读 afterRead(event) { const {file, index} = event.detail; console.log(event) let that = this let count = 0; let type = event.currentTarget.dataset.field; let sheet = event.currentTarget.dataset.sheet; let width = event.currentTarget.dataset.width; // 当设置 mutiple 为 true 时, file 为数组格式,否则为对象格式 that.uploadFiles(file, count,sheet+"."+type,width) },

//文件上传 uploadFiles(imgPaths, count,type,width) { //console.log(imgPaths) var that = this; wx.uploadFile({ url: app.url('entry/wxapp/UpImg'), filePath: imgPaths[count].url, name: 'file', formData: { m:'rcw_cul', width:width }, //这里是上传图片时一起上传的数据 success: function (res) { let {imgs = []} = {}; imgs.push({url:res.data}) that.setData({[type]:imgs})
}, fail: function (e) { }, complete: function (e) { count++; //下一张 console.log(count) if (count == imgPaths.length) { //上传完毕,作一下提示 console.log('上传完毕') } else { //递归调用,上传下一张 that.uploadFiles(imgPaths, String(count),type); } } }) },

ruchengwang commented 1 year ago

/ 微信截图_20230620201251

/

mazi233 commented 1 year ago

提供代码也没用的 example都有问题 但是pc还没办法调试

johnsonwong666 commented 1 year ago

手机上正常吗?什么场景需要在PC端调试?而不是开发者工具?

mazi233 commented 1 year ago

手机上正常吗?什么场景需要在PC端调试?而不是开发者工具?

因为 开发工具 手机都正常 只有pc使用时候有问题

ruchengwang commented 1 year ago

手机上是正常的,开 发者工具正常。电脑微信点不动,PC端调试不了!

mazi233 commented 1 year ago

手机上是正常的,开 发者工具正常。电脑微信点不动,PC端调试不了!

是的 哈哈

johnsonwong666 commented 1 year ago

发一下你们线上的小程序来看看

ruchengwang commented 1 year ago

@johnsonwong666 找到原因了吗?有解决方法吗?

changzhengithub commented 1 year ago

还没有解决办法吗,官方也不回复一下

9Lzen commented 1 year ago

遇到同样的问题:手机端微信打开小程序上传图片正常,电脑端打开小程序点击上传图片没反应也没报错(图片删除是有反应的) 我调试了一下发现(bind:after-read="afterRead")afterRead方法并没有进去

johnsonwong666 commented 1 year ago

debug 了一下。现在上传图片使用的是wx.chooseFile

image

报错输出了这个

image

微信小程序官方社区有相关的讨论 https://developers.weixin.qq.com/community/search?query=chooseMedia%2520pc&page=1&block=1&random=1688022066496&type=1

上传没有反应的 跟我一样打印一个error看一下是什么问题。这个问题考虑还原成wx.chooseImage解决

yogwang commented 1 year ago

小程序PC端现在还不支持 wx.chooseMessageFile 这个API,所以大家如果要使用 uploader 组件请指定 accept 属性。不然默认会走 wx.chooseMessageFile 这个API。

ruchengwang commented 1 year ago

@yogwang 指定accept="image" 也是不行的

9Lzen commented 1 year ago

uploader组件的accept默认是image了,指不指定都没啥用目前

9Lzen commented 1 year ago

我看了一下源码中的uploader组件的accept属性默认是image,所以调用的是wx.chooseMedia, 可以去码源输出一下报错信息: image 如果显示"chooseMedia:fail fail invalid maxDuration",可以在咱们的wxml里面的van-uploader标签里设置一下max-duration的值为10

yogwang commented 1 year ago

uploader组件的accept默认是image了,指不指定都没啥用目前

是的,应该就是 maxDuration 的原因了。PC端修复会比较慢,手动绑定 <vant-uploader> 组件的 max-duration 属性值为 10 以内看看能否解决问题,也可以改源码但是不怎么建议。

johnsonwong666 commented 1 year ago

maxDuration 传 10 也是没有反应

image
yogwang commented 1 year ago

maxDuration 传 10 也是没有反应 image

改成 9 看看?上面的人说指定为 10 可以解决问题,但是有一些人说小于 10 才行。

johnsonwong666 commented 1 year ago

5 6 7 8 9 都试过了 这个应该是小程序官方的问题

yogwang commented 1 year ago

5 6 7 8 9 都试过了 这个应该是小程序官方的问题

我这边使用 <van-uploader max-duration="{{10}}" file-list="{{ fileList }}" bind:after-read="afterRead" /> 设置 max-duration10 可以打开弹窗的。 image 基础库版本 2.32.3

johnsonwong666 commented 1 year ago

我是 mac os @yogwang

yogwang commented 1 year ago

你打开DevTools,看看 uploader 组件的 maxDuration 属性是否是小于 10 的。

johnsonwong666 commented 1 year ago

你打开DevTools,看看 uploader 组件的 maxDuration 属性是否是小于 10 的。 确认过了 不管是通过props穿 还是 直接改wx.chooseMedia 的参数都是没有反应的

yogwang commented 1 year ago

确认过了 不管是通过props穿 还是 直接改wx.chooseMedia 的参数都是没有反应的

也有可能是 max-count 引起的,默认最大值为 20 但是 uploader 组件默认值为 100。直接使用 wx.chooseMedia 这个API看看有什么异常抛出吗?没有Mac只能靠猜测。

johnsonwong666 commented 1 year ago

@yogwang 错误提示上面贴了 fail function cannot run on service

yogwang commented 1 year ago

@yogwang 错误提示上面贴了 fail function cannot run on service

抱歉,没有注意,那完蛋了。如果不是基础库版本太低的话。也有可能是因为你的微信客户端没跟新?

chooseMedia在MAC系统中无法使用? | 微信开放社区

mac端目前暂不支持此功能。

或者考虑做一下兼容?如果不支持 wx.chooseMedia 就改用 wx.chooseImage

landluck commented 1 year ago

解决办法:非移动端将 wx.chooseMedia 降级为 wx.chooseImage,本周修复

ruchengwang commented 1 year ago

是否考虑加个图片裁切功能

landluck commented 1 year ago

v1.10.21 已修复

hoperce commented 1 year ago

企业微信下ios不支持chooseMedia