收藏
回答

uploadFile 卡住无响应

问题模块
API和组件

代码和截图如下所示,

环境:安卓7.0

现象:

        1. 执行uploadVideo方法就会卡住(主要表现为点击屏幕无反应,loading不转了),百分百在我手机上重现;

        2. 当我注释掉uploadTask.onProgressUpdate时,虽不会出现但会上传失败。

        3. 只在上传较大文件(100M左右)才会出现,十几M会卡一小会(零点几秒)且很快就好了。


一开始我以为是频繁的setData所致,但是应该不会。我是上传一个100M的视频文件,且在进度每增加20%时才会setData一次(大约好几秒才setData),并不会太频繁。


uploadVideo: function (successCallback) {
    let failCallback = () => {
      if (wx.hideLoading) { wx.hideLoading() }
      common.doAnimation('error', '视频上传失败,请删除视频后重新提交', this);
    }
    let uploadTask = wx.uploadFile({
      url: inter.imp().video_upload,
      filePath: this.data.videoURL[0],
      name: 'file',
      method: 'POST',
      header: {
        "apsid": userProfile.apsid
      },
      success: (res) => {
        let data = JSON.parse(res.data);
        if (data.err_code == 0) {
          this.data.postVideo.push(data.data.video_name)
          isNewVideo = false;
          successCallback()
        } else {
          failCallback()
        }
      },
      fail: () => { failCallback() }
    });
 
    let initUploadedPercent = 20;
    uploadTask && uploadTask.onProgressUpdate((res) => {
      console.log('上传进度', res.progress)
      console.log('已经上传的数据长度', res.totalBytesSent)
      console.log('预期需要上传的数据总长度', res.totalBytesExpectedToSend)
      if (res.progress >= initUploadedPercent) {
        this.setData({ uploadedPercent: initUploadedPercent })
        initUploadedPercent += 20;
      }
        
    })
  },




最后一次编辑于  2017-08-29  (未经腾讯允许,不得转载)
邀请回答
复制链接收藏投诉关注问题回答

1 个回答

  • 肖邦
    肖邦
    03-27

    是的 我也遇到了 你有解决吗  UploadTask 里面的方法 跑了几次安卓的就直接炸掉卡死了, 官方只跑一次就说没问题,也不解决

    03-27
    赞同
    回复