🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
## 上传 ### 一.了解wx.chooseImage(OBJECT) ![](https://box.kancloud.cn/c7c141c28d44923b6c0516a069372ad2_946x559.png) ### 二.代码编程 在pages文件里面创建uploadimg文件夹 #### 1.编写页面结构:uploadimg.wxml <span style="font-family:Comic Sans MS;font-size:18px;color:#333333;"><view class="container" style="padding:1rem;"> <button type="primary"bindtap="chooseimage">获取图片</button> <image src="{{tempFilePaths }}" mode="aspecFill" style="width: 100%; height: 450rpx;margin:1rem 0;"/> </view></span> ![](https://box.kancloud.cn/dd90707e7530e7eee6c690ca6030261c_384x524.png) #### 2.设置数据:uploadimg.js //获取应用实例 var app = getApp() Page({ data: { tempFilePaths: '', }, /** * 上传图片 */ chooseimage: function () { var _this = this; wx.chooseImage({ count: 1, // 默认9 // 可以指定是原图还是压缩图,默认二者都有 sizeType: ['original', 'compressed'], // 可以指定来源是相册还是相机,默认二者都有 sourceType: ['album', 'camera'], // 返回选定照片的本地文件路径列表,tempFilePath可以作为img标签的src属性显示图片 success: function (res) { _this.setData({ tempFilePaths:res.tempFilePaths }) } }) } }) ![](https://box.kancloud.cn/72128ca5382fda99578064173f77f9c7_365x519.png) ### wx.uploadFile(OBJECT) 将本地资源上传到开发者服务器,客户端发起一个 HTTPS POST 请求,其中 content-type 为 multipart/form-data 。使用前请先阅读说明。 如页面通过 wx.chooseImage 等接口获取到一个本地资源的临时文件路径后,可通过此接口将本地资源上传到指定服务器。 OBJECT参数说明: ![](https://box.kancloud.cn/d00fd22be90c55427a1047b50324d259_967x521.png) success返回参数说明: ![](https://box.kancloud.cn/4d5a9e8f79702baf4716676694b8060d_959x162.png) 基础库 1.4.0 开始支持,低版本需做兼容处理 返回一个 uploadTask 对象,通过 uploadTask,可监听上传进度变化事件,以及取消上传任务。 ### uploadTask uploadTask 对象的方法列表: ![](https://box.kancloud.cn/5380b13f6e4f0632e693f3fb81c05080_962x167.png) onProgressUpdate 返回参数说明: ![](https://box.kancloud.cn/cbb14eaba49cbdf6a5c58e9aad0eff2b_959x221.png) 示例代码: const uploadTask = wx.uploadFile({ url: 'http://example.weixin.qq.com/upload', //仅为示例,非真实的接口地址 filePath: tempFilePaths[0], name: 'file', formData:{ 'user': 'test' }, success: function(res){ var data = res.data //do something } }) uploadTask.onProgressUpdate((res) => { console.log('上传进度', res.progress) console.log('已经上传的数据长度', res.totalBytesSent) console.log('预期需要上传的数据总长度', res.totalBytesExpectedToSend) }) uploadTask.abort() // 取消上传任务 ## 下载 ### wx.downloadFile(OBJECT) 下载文件资源到本地,客户端直接发起一个 HTTP GET 请求,返回文件的本地临时路径。使用前请先阅读说明。 OBJECT参数说明: ![](https://box.kancloud.cn/77803e58e12d32d1262b000c11cb8c9f_959x340.png) 注:文件的临时路径,在小程序本次启动期间可以正常使用,如需持久保存,需在主动调用 wx.saveFile,才能在小程序下次启动时访问得到。 success返回参数说明: ![](https://box.kancloud.cn/dd66c40570f053b2128a9f8a81a0b6f2_967x161.png) 示例代码: wx.downloadFile({ url: 'https://example.com/audio/123', //仅为示例,并非真实的资源 success: function(res) { // 只要服务器有响应数据,就会把响应内容写入文件并进入 success 回调,业务需要自行判断是否下载到了想要的内容 if (res.statusCode === 200) { wx.playVoice({ filePath: res.tempFilePath }) } } }) 返回值: 基础库 1.4.0 开始支持,低版本需做兼容处理 返回一个 downloadTask 对象,通过 downloadTask,可监听下载进度变化事件,以及取消下载任务。 ### downloadTask downloadTask 对象的方法列表: ![](https://box.kancloud.cn/c736897ba69caa7c692d0b9b5ce5be0f_968x163.png) onProgressUpdate 返回参数说明: ![](https://box.kancloud.cn/35e91385d19449e194cd4328e4437ac7_962x221.png) 示例代码: const downloadTask = wx.downloadFile({ url: 'http://example.com/audio/123', //仅为示例,并非真实的资源 success: function(res) { wx.playVoice({ filePath: res.tempFilePath }) } }) downloadTask.onProgressUpdate((res) => { console.log('下载进度', res.progress) console.log('已经下载的数据长度', res.totalBytesWritten) console.log('预期需要下载的数据总长度', res.totalBytesExpectedToWrite) }) downloadTask.abort() // 取消下载任务 ### Bug & Tip tip: 6.5.3 以及之前版本的 iOS 微信客户端 header 设置无效