小程序开发API之wx.uploadFile、UploadTask监听上传事件及取消上传任务的对象

版权声明:欢迎转载,可Chat交流,写博不易请标明出处: https://blog.csdn.net/JackJia2015/article/details/86686246

wx.uploadFile(Object object)

将本地资源上传到服务器。客户端发起一个 HTTPS POST 请求,其中 content-type 为 multipart/form-data

wx.uploadFile参数
在这里插入图片描述

Object res参数
在这里插入图片描述
例如

/*
  url    开发者服务器地址
  filePath   要上传文件资源的路径
  name   文件对应的 key,开发者在服务端可以通过这个 key 获取文件的二进制内容
  header   HTTP 请求 Header,Header 中不能设置 Referer
  formData   HTTP 请求中其他额外的 form data
*/
Page({
  data: {
    
  },
  onLoad: function (options) {
    //待上传的文件
    const tempFilePaths = options.tempFilePaths
    wx.downloadFile({
      url: 'https://example.weixin.qq.com/upload', 
      filePath: tempFilePaths[0],
      name: 'file',
      formData: {
        user: 'test'
      },
      success(res) {
        console.log('上传成功:', res.data)
        console.log('状态码:', res.statusCode)
      },
      fail(err){
        console.log('上传失败:',err)
      }
    })
  }
})

UploadTask

一个可以监听上传进度变化事件,以及取消上传任务的对象

方法

UploadTask.abort()

中断上传任务

UploadTask.onProgressUpdate(function callback)

监听上传进度变化事件

UploadTask.offProgressUpdate(function callback)

取消监听上传进度变化事件

UploadTask.onHeadersReceived(function callback)

监听 HTTP Response Header 事件。会比请求完成事件更早
Object res属性
在这里插入图片描述

UploadTask.offHeadersReceived(function callback)

取消监听 HTTP Response Header 事件
Object res属性
在这里插入图片描述

例如
index.wxml

<button bindtap='btnClick1' type="primary">上传进度</button>
<button bindtap='btnClick2' type="primary">取消上传任务</button>

index.js

/*
  url    开发者服务器地址
  filePath   要上传文件资源的路径
  name   文件对应的 key,开发者在服务端可以通过这个 key 获取文件的二进制内容
  header   HTTP 请求 Header,Header 中不能设置 Referer
  formData   HTTP 请求中其他额外的 form data
*/
Page({
  data: {
    
  },
  onLoad: function (options) {
    //待上传的文件
    const tempFilePaths = options.tempFilePaths
    const uploadTask = wx.downloadFile({
      url: 'https://example.weixin.qq.com/upload', 
      filePath: tempFilePaths[0],
      name: 'file',
      formData: {
        user: 'test'
      },
      success(res) {
        console.log('上传成功:', res.data)
        console.log('状态码:', res.statusCode)
      },
      fail(err){
        console.log('上传失败:',err)
      }
    })
  },
  btnClick1:function(){
    uploadTask.onProgressUpdate((res) => {
      console.log('上传进度', res.progress)
      console.log('已经上传的数据长度', res.totalBytesSent)
      console.log('预期需要上传的数据总长度', res.totalBytesExpectedToSend)
    })
  },
  btnClick2: function () {
    uploadTask.abort() // 取消上传任务
  }
})





猜你喜欢

转载自blog.csdn.net/JackJia2015/article/details/86686246