uploadFile

解释:将本地资源上传到开发者服务器,客户端发起一个 HTTPS POST 请求,其中 content-typemultipart/form-data如页面通过 swan.chooseImage 等接口获取到一个本地资源的临时文件路径后,可通过此接口将本地资源上传到指定服务器。

方法参数:Object

Object参数说明:

参数类型必填说明
urlString开发者服务器 url
filePathString要上传文件资源的路径
nameString文件对应的 key , 开发者在服务器端通过这个 key 可以获取到文件二进制内容。
headerObjectHTTP 请求 Header, header 中不能设置 Referer 。
formDataObjectHTTP 请求中其他额外的 form data
successFunction接口调用成功的回调函数
failFunction接口调用失败的回调函数
completeFunction接口调用结束的回调函数(调用成功、失败都会执行)

success返回参数说明:

参数类型说明
dataString开发者服务器返回的数据。
statusCodeNumber开发者服务器返回的 HTTP 状态码。

示例 1在开发者工具中预览效果

  1. swan.chooseImage({
    success: function (res) {
    swan.uploadFile({
    url: 'https://smartprogram.baidu.com/xxx', // 仅为示例,并非真实的接口地址
    filePath: res.tempFilePaths[0], // 要上传文件资源的路径
    name: 'myfile',
    success: function (res) {
    console.log(res.statusCode);
    },
    fail: function (err) {
    console.log('错误码:' + err.errCode);
    console.log('错误信息:' + err.errMsg);
    }
    });
    }
    });

返回值:

返回一个uploadTask对象,通过uploadTask,可监听上传进度变化事件,以及取消上传任务。

uploadTask 对象的方法列表:

方法类型说明
onProgressUpdatecallback监听上传进度变化
abort-中断上传任务

onProgressUpdate 返回参数说明:

参数类型说明
progressNumber上传进度百分比
totalBytesSentNumber已经上传的数据长度,单位 Bytes。
totalBytesExpectedToSendNumber预期需要上传的数据总长度,单位 Bytes。

示例 2

  1. const uploadTask = swan.uploadFile({
    url: 'https://smartprogram.baidu.com/xxx', //开发者服务器 url
    filePath: res.tempFilePaths[0], // 要上传文件资源的路径
    name: 'myfile',
    success: function (res){
    console.log(res.statusCode);
    },
    fail: function (err) {
    console.log('错误码:' + err.errCode);
    console.log('错误信息:' + err.errMsg);
    }
    });

    uploadTask.onProgressUpdate(res => {
    console.log('上传进度', res.progress)
    console.log('已经上传的数据长度', res.totalBytesSent)
    console.log('预期需要上传的数据总长度', res.totalBytesExpectedToSend)
    });

    uploadTask.abort(); // 取消上传任务