收藏
回答

10月14日开始部分用户使用uploadFile上传会出现405报错

框架类型 问题类型 API/组件名称 终端类型 微信版本 基础库版本
小程序 Bug wx.uploadFile 微信安卓客户端 8.0.15 2.20.0

14号开始有部分用户使用wx.uploadFile时一直报405的错误,目前都是安卓6和7的系统,微信版本都是最新的8.0.15,之前并未在移动端出现过这个问题,又只有部分用户出现的,而且同一用户用webview上的上传是正常的,所以怀疑是wx.uploadFile的问题

回答关注问题邀请回答
收藏

5 个回答

  • 风行
    风行
    2022-01-18

    我遇到的问题就是部分安卓机型使用wx.uploadFile上传文件失败。

    一开始自己添加Content-Type报nginx400,去掉Content-Type去后端服务了,但拿到文件数据。

    大部分手机都是没有问题,仅少部分安卓手机出问题。

    最后我的解决思路是:

    1、默认使用wx.uploadFile上传,如果返回错误改用第2条。

    2、将图片转换成base64,再上传。

    2022-01-18
    有用
    回复
  • 草料二维码
    草料二维码
    2021-10-21

    同样的情况。我们的问题已经解决了。是因为 微信小程序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,服务端就可以正常处理请求。

    2021-10-21
    有用
    回复 6
    查看更多(1)
  • ZHY
    ZHY
    发表于移动端
    2021-10-20
    从昨天开始越来越多的用户反馈了,求官方重视,另外怀疑是官方根据uid和设备进行的灰度测试。 以下是用户测试的反馈 “ 我微信在他人手机上登录能上传图片成功,他人微信在我手机上传图片也能成功,可就是我上传失败,什么问题呢?怪了!”
    2021-10-20
    有用
    回复 4
    • 良
      2021-10-27
      你好,想咨询一下你们是什么小程序?我们这边排查一下具体是什么问题
      2021-10-27
      回复
    • ZHY
      ZHY
      2021-11-05回复
      你好,目前问题我通过测试验证已规避,经测试发现是 调用wx.uploadFile api时 如果设置了 header 会导致上面描述的情况。 并且是在某个时间点突然出现的。 后续这边的解决方案是去掉header的设置,出问题的用户可正常使用。 具体什么问题也希望你们排查看下 回复
      2021-11-05
      回复
    • 良
      2021-11-08
      你好,我们重构了upload的接口,从代码上看header的逻辑和原先是一样的,我们这边没有复现出你所说的问题,最近我们会继续灰度新的接口,麻烦再关注一下是否有问题;如果可以的话,可以回退到原先的版本,和我们一起联调一下,查找一下真实的问题原因就最好了
      2021-11-08
      回复
    • ZHY
      ZHY
      2021-11-28回复
      你好,我这边自己没办法复现,当时是用户来反馈,因为我们同一套上传代码 用在不同小程序, 都发给当下出问题的用户使用出现不同结果,对比代码发现,唯一的差别就是这个header设置, 后续去掉header设置上线,出问题的小程序也正常了。                      header: {
                             "Content-Type":"multipart/form-data"
                          },
      2021-11-28
      回复
  • 简 ☆★ 单
    简 ☆★ 单
    2021-10-20

    我这边也遇到一个用户,一样的问题。

    2021-10-20
    有用
    回复 3
    • 简 ☆★ 单
      简 ☆★ 单
      2021-10-20
      wx.uploadFile图片上传到阿里云oss,安卓7.x,vivox9。
      2021-10-20
      回复
    • ZHY
      ZHY
      2021-10-20
      同样问题
      2021-10-20
      回复
    • 良
      2021-10-27
      你好,想咨询一下你们是什么小程序?我们这边排查一下具体是什么问题
      2021-10-27
      回复
  • Cjiang
    Cjiang
    2021-10-20

    2021-10-20
    有用
    回复 4
    • 马沸腾
      马沸腾
      2021-10-20
      但是只有低版本安卓的用户才有这个问题啊,大多数都可以的,出问题的用户在webview上传也是可以的,而且uploadFile不都是用post吗,我们现在是支持的。
      2021-10-20
      回复
    • 马沸腾
      马沸腾
      2021-10-20
      我们用的是第三方的文件储存服务,所以看不到具体的请求信息,但看情况像是和这个帖子里面的是同一个问题,都是最近出现,出现的机型也重合
      https://developers.weixin.qq.com/community/develop/doc/0004e8aef5cb4834b1ec992835b400
      2021-10-20
      回复
    • Cjiang
      Cjiang
      2021-10-20回复马沸腾
      麻烦提供出现问题的具体机型、微信版本号、系统版本号,以及能复现问题的代码片段(https://developers.weixin.qq.com/miniprogram/dev/devtools/minicode.html
      2021-10-20
      回复
    • Cjiang
      Cjiang
      2021-10-20回复马沸腾
      麻烦在手机微信那里上传下日志: 我->设置->帮助与反馈右上角有个上报日志的入口,麻烦提供一下微信号,时间点(具体到分钟)
      2021-10-20
      回复
登录 后发表内容