小程序
小游戏
企业微信
微信支付
扫描小程序码分享
14号开始有部分用户使用wx.uploadFile时一直报405的错误,目前都是安卓6和7的系统,微信版本都是最新的8.0.15,之前并未在移动端出现过这个问题,又只有部分用户出现的,而且同一用户用webview上的上传是正常的,所以怀疑是wx.uploadFile的问题
5 个回答
加粗
标红
插入代码
插入链接
插入图片
上传视频
我遇到的问题就是部分安卓机型使用wx.uploadFile上传文件失败。
一开始自己添加Content-Type报nginx400,去掉Content-Type去后端服务了,但拿到文件数据。
大部分手机都是没有问题,仅少部分安卓手机出问题。
最后我的解决思路是:
1、默认使用wx.uploadFile上传,如果返回错误改用第2条。
2、将图片转换成base64,再上传。
你好,麻烦通过点击下方“反馈信息”按钮,提供出现问题的。
同样的情况。我们的问题已经解决了。是因为 微信小程序uploadFile方法,HTTP请求中的Content-Type缺少了boundary。
正确的应该是:multipart/form-data; boundary=xxxxx
实际接收到的是:multipart/form-data;
服务端无法根据boundary来区分form-data的fields,因此无法处理请求导致上传发生错误。
我们解决方案:
在网关层编写了一个中间件应用在上传服务器前,判断请求的Content-Type是中不存在boundary时。从Request Body中获取第一行(就是boundary),去掉前缀"--",放到header中。
举例:
Body内容如下:
--1634813444
Content-Disposition: form-data; name="Filedata"; filename="aaa.pdf"; filename*="UTF-8''aa.pdf"
<aa.pdf>
Content-Disposition: form-data; name="resotype"
1
--1634813444--
获取"--1634813444",并去掉前缀"--"。得到 Content-Type: multipart/form-data; boundary=1634813444,服务端就可以正常处理请求。
我这边也遇到一个用户,一样的问题。
关注后,可在微信内接收相应的重要提醒。
请使用微信扫描二维码关注 “微信开放社区” 公众号
我遇到的问题就是部分安卓机型使用wx.uploadFile上传文件失败。
一开始自己添加Content-Type报nginx400,去掉Content-Type去后端服务了,但拿到文件数据。
大部分手机都是没有问题,仅少部分安卓手机出问题。
最后我的解决思路是:
1、默认使用wx.uploadFile上传,如果返回错误改用第2条。
2、将图片转换成base64,再上传。
同样的情况。我们的问题已经解决了。是因为 微信小程序uploadFile方法,HTTP请求中的Content-Type缺少了boundary。
正确的应该是:multipart/form-data; boundary=xxxxx
实际接收到的是:multipart/form-data;
服务端无法根据boundary来区分form-data的fields,因此无法处理请求导致上传发生错误。
我们解决方案:
在网关层编写了一个中间件应用在上传服务器前,判断请求的Content-Type是中不存在boundary时。从Request Body中获取第一行(就是boundary),去掉前缀"--",放到header中。
举例:
Body内容如下:
--1634813444
Content-Disposition: form-data; name="Filedata"; filename="aaa.pdf"; filename*="UTF-8''aa.pdf"
<aa.pdf>
--1634813444
Content-Disposition: form-data; name="resotype"
1
--1634813444--
获取"--1634813444",并去掉前缀"--"。得到 Content-Type: multipart/form-data; boundary=1634813444,服务端就可以正常处理请求。
"Content-Type":"multipart/form-data"
},
我这边也遇到一个用户,一样的问题。
https://developers.weixin.qq.com/community/develop/doc/0004e8aef5cb4834b1ec992835b400