## 上传
### 一.了解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 设置无效
- 商城api接口
- 首页数据获取
- 分类接口
- 购物车接口
- 商品信息接口
- 搜索接口
- 订单列表接口
- 店铺接口
- 收藏接口
- 收货地址接口
- 生成订单接口
- 支付接口
- 会员中心接口
- 登录注册接口
- 关于我们
- 图片上传
- 分销中心
- 分销明细
- 代金券
- 平台红包列表
- 分销申请列表
- 我的推广
- 微信小程序
- 简介
- 开发前准备
- 目录结构介绍
- 发起请求
- 网络请求提交表单
- 代码及开发所遇到问题总结
- 导航跳转时所遇到的问题
- 缓存数据与数据取得的问题
- 如何引入外部css
- 如何定义与使用全局变量
- 如何定义新的界面
- 微信小程序支付
- 小程序的手机验证码登录
- 上传,下载
- 提示框
- app.json配置
- 配置demo
- pages
- window
- tabBar
- networkTimeout
- debug
- page.json
- 缓存
- 特效
- 滑动方式
- 城市切换
- 五星好评
- Switch
- 上拉加载
- wxml 标签
- 视图容器
- 基础内容
- 表单组件
- 导航
- 媒体组件
- 自定义提示框
- 小程序内访问网页
- 倒计时显示
- 微信小程序,如何在返回前一个页面时,执行前一个页面的方法
- 在本地可以请求到数据,但手机上是请求不到的
- curl请求失败
- 代码同步
- 短信平台更换