## uni.uploadFile(OBJECT)
将本地资源上传到开发者服务器,客户端发起一个 POST 请求,其中 content-type 为 multipart/form-data。
如页面通过 uni.chooseImage 等接口获取到一个本地资源的临时文件路径后,可通过此接口将本地资源上传到指定服务器。
**OBJECT 参数说明**
![](https://box.kancloud.cn/db0db13f59eb55a2772a935e611365f7_860x405.png)
**files参数说明**
![](https://box.kancloud.cn/86e0de7ad8a802531870edc305ac6dae_863x129.png)
success 返回参数说明
![](https://box.kancloud.cn/0e4210dfac21e8000218e18b2bc6d1a9_860x128.png)
**示例**
```
uni.chooseImage({
success: function (chooseImageRes) {
const tempFilePaths = chooseImageRes.tempFilePaths;
uni.uploadFile({
url: 'https://www.example.com/upload', //仅为示例,非真实的接口地址
filePath: tempFilePaths[0],
name: 'file',
formData: {
'user': 'test'
},
success: function (uploadFileRes) {
console.log(uploadFileRes.data);
}
});
}
});
```
**返回值**
返回一个 uploadTask 对象,通过 uploadTask,可监听上传进度变化事件,以及取消上传任务。
**uploadTask 对象的方法列表**
![](https://box.kancloud.cn/cb0560dd52ee4cef584f7f563687d48e_864x129.png)
**onProgressUpdate 返回参数说明**
![](https://box.kancloud.cn/acf2e5dacc0d1052e1b63cfb3274eb32_857x170.png)
**示例**
```
uni.chooseImage({
success: function (chooseImageRes) {
const tempFilePaths = chooseImageRes.tempFilePaths;
const uploadTask = uni.uploadFile({
url: 'https://www.example.com/upload', //仅为示例,非真实的接口地址
filePath: tempFilePaths[0],
name: 'file',
formData: {
'user': 'test'
},
success: function (uploadFileRes) {
console.log(uploadFileRes.data);
}
});
uploadTask.onProgressUpdate(function (res) {
console.log('上传进度' + res.progress);
console.log('已经上传的数据长度' + res.totalBytesSent);
console.log('预期需要上传的数据总长度' + res.totalBytesExpectedToSend);
// 测试条件,取消上传任务。
if (res.progress > 50) {
uploadTask.abort();
}
});
}
});
```
**uni.downloadFile(OBJECT)**
下载文件资源到本地,客户端直接发起一个 HTTP GET 请求,返回文件的本地临时路径。
OBJECT 参数说明
![](https://box.kancloud.cn/ebdf820505350a66dab2800ef5c00323_868x246.png)
注:文件的临时路径,在应用本次启动期间可以正常使用,如需持久保存,需在主动调用 uni.saveFile,才能在应用下次启动时访问得到。
success 返回参数说明
![](https://box.kancloud.cn/cff1c5c9b101b21e2ef7d8029f04d54f_866x135.png)
示例
```
uni.downloadFile({
url: 'https://www.example.com/file/test', //仅为示例,并非真实的资源
success: function (res) {
if (res.statusCode === 200) {
console.log('下载成功');
}
}
});
```
**返回值**
返回一个 downloadTask 对象,通过 downloadTask,可监听上传进度变化事件,以及取消上传任务。
**downloadTask 对象的方法列表**
![](https://box.kancloud.cn/db3419807648b381b372df5a0e4765a8_859x134.png)
**onProgressUpdate 返回参数说明**
![](https://box.kancloud.cn/f1da68fcf0cefba5d1259bada96753de_862x166.png)
示例
```
const downloadTask = uni.downloadFile({
url: 'http://www.example.com/file/test', //仅为示例,并非真实的资源
success: function (res) {
if (res.statusCode === 200) {
console.log('下载成功');
}
}
});
downloadTask.onProgressUpdate(function (res) {
console.log('下载进度' + res.progress);
console.log('已经下载的数据长度' + res.totalBytesWritten);
console.log('预期需要下载的数据总长度' + res.totalBytesExpectedToWrite);
// 测试条件,取消下载任务。
if (res.progress > 50) {
downloadTask.abort();
}
});
```