收藏
回答

wx.uploadFile 卡住了怎么办?

相同的代码,在开发者工具和安卓真机上可以,在 iPhone 6s/Xs 真机上,wx.uploadFile 卡住,success/fail/complete/onProgressUpdate 都不会回调。微信是 7.0.10

代码非常简单,就是标准的调用:

function uploadFile(options, onProgressUpdate) {
  return new Promise((resolve, reject) => {
    const task = wx.uploadFile({
      url: options.url,
      header: options.headers,
      name: options.name,
      filePath: options.filePath,
      formData: options.formData,
      success(res) {
        try {
          resolve(JSON.parse(res.data))
        } catch(e) {
          resolve(res.data)
        }
      },
      fail(e) {
        const error = e.message || JSON.stringify(e)
        resolve({ error, e })
      }
    })


    if (onProgressUpdate) {
      task.onProgressUpdate(res => {
        onProgressUpdate(res)
      })
    }
  })
}

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

2 个回答

  • Junwen
    Junwen
    2020-03-04

    这是确实会出现这问题 ios环境5m左右往上 就直接无法上传了 属于重大bug 到现在也没解决

    2020-03-04
    有用
    回复
  • Jason
    Jason
    2020-02-16

    更新:真机调试时,也可以正常调用。就是真机单独运行时,死活没有回调回来。

    2020-02-16
    有用
    回复 10
    • Mr.Zhao
      Mr.Zhao
      2020-02-16
      没配置request域名吧  你真机打开调试,试试
      2020-02-16
      回复
    • Jason
      Jason
      2020-02-16回复Mr.Zhao
      设置了,Android 真机是完全正常的。打开调试试过了,加了日志输出,证明完全没有回调。
      2020-02-16
      回复
    • Jason
      Jason
      2020-02-16回复Mr.Zhao
      更新:在开发者工具中开启「增加编译」,则一切正常…鬼畜…我感觉是微信 7.0.10 的运行环境有问题。
      2020-02-16
      回复
    • Mr.Zhao
      Mr.Zhao
      2020-02-16回复Jason
      你可以加一行console.error(e);  再调试看看
      2020-02-16
      回复
    • Jason
      Jason
      2020-02-16回复Mr.Zhao
      我问题里说了,success/fail/complete/onProgressUpdate 都不会回调。
      2020-02-16
      回复
    查看更多(5)
登录 后发表内容
问题标签