图片上传主要用到
1、wx.chooseImage(Object object)
从本地相册选择图片或使用相机拍照。
参数
Object object
属性 | 类型 | 默认值 | 必填 | 说明 |
---|---|---|---|---|
count | number | 9 | 否 | 最多可以选择的图片张数 |
sizeType | Array.<string> | ['original', 'compressed'] | 否 | 所选的图片的尺寸 |
sourceType | Array.<string> | ['album', 'camera'] | 否 | 选择图片的来源 |
success | function | 否 | 接口调用成功的回调函数 | |
fail | function | 否 | 接口调用失败的回调函数 | |
complete | function | 否 | 接口调用结束的回调函数(调用成功、失败都会执行) |
object.sizeType 的合法值
值 | 说明 | 最低版本 |
---|---|---|
original | 原图 | |
compressed | 压缩图 |
object.sourceType 的合法值
值 | 说明 | 最低版本 |
---|---|---|
album | 从相册选图 | |
camera | 使用相机 |
object.success 回调函数
参数
Object res
属性 | 类型 | 说明 | 最低版本 |
---|---|---|---|
tempFilePaths | Array.<string> | 图片的本地临时文件路径列表 | |
tempFiles | Array.<Object> | 图片的本地临时文件列表 | 1.2.0 |
res.tempFiles 的结构
属性 | 类型 | 说明 |
---|---|---|
path | string | 本地临时文件路径 |
size | number | 本地临时文件大小,单位 B |
wx.chooseImage({ count: 1, sizeType: ['original', 'compressed'], sourceType: ['album', 'camera'], success (res) { // tempFilePath可以作为img标签的src属性显示图片 const tempFilePaths = res.tempFilePaths } })
2、wx.uploadFile(Object object)
将本地资源上传到服务器。客户端发起一个 HTTPS POST 请求,其中 content-type
为 multipart/form-data
。使用前请注意阅读相关说明。
参数
Object object
属性 | 类型 | 默认值 | 必填 | 说明 |
---|---|---|---|---|
url | string | 是 | 开发者服务器地址 | |
filePath | string | 是 | 要上传文件资源的路径 | |
name | string | 是 | 文件对应的 key,开发者在服务端可以通过这个 key 获取文件的二进制内容 | |
header | Object | 否 | HTTP 请求 Header,Header 中不能设置 Referer | |
formData | Object | 否 | HTTP 请求中其他额外的 form data | |
success | function | 否 | 接口调用成功的回调函数 | |
fail | function | 否 | 接口调用失败的回调函数 | |
complete | function | 否 | 接口调用结束的回调函数(调用成功、失败都会执行) |
object.success 回调函数
参数
Object res
属性 | 类型 | 说明 |
---|---|---|
data | string | 开发者服务器返回的数据 |
statusCode | number | 开发者服务器返回的 HTTP 状态码 |
返回值
UploadTask
基础库 1.4.0 开始支持,低版本需做兼容处理。
一个可以监听上传进度进度变化的事件和取消上传的对象
示例代码
wx.chooseImage({ success (res) { const tempFilePaths = res.tempFilePaths wx.uploadFile({ url: 'https://example.weixin.qq.com/upload', //仅为示例,非真实的接口地址 filePath: tempFilePaths[0], name: 'file', formData: { 'user': 'test' }, success (res){ const data = res.data //do something } }) } })
小程序案例:
.wxml 文件:
<view> <button bindtap='photo' type='warn' style='width:50%; margin:50rpx auto'>选择图片</button> </view>
.js 文件
(1)单图上传
photo: function (e) { wx.chooseImage({ count: 1, //默认上传个数 sizeType: ['original', 'compressed'], sourceType: ['album'], success(res) { // tempFilePath可以作为img标签的src属性显示图片 var albumPaths = res.tempFilePaths[0] console.log('图片地址名称' + albumPaths); wx.uploadFile({ url: app.appUrl + 'img', filePath: albumPaths, name: 'img', formData: { 'nickName': '123',//其他参数 'openid': 'xxssdazcs5gxxxaa',//其他参数 }, success(res) { console.log(res) } }) } }) },
(2)多图上传(相比单图上传,多了个for遍历)
photo: function (e) { wx.chooseImage({ count: 3,//默认上传个数 sizeType: ['original', 'compressed'], sourceType: ['album'], success(res) { // tempFilePath可以作为img标签的src属性显示图片 var albumPaths = res.tempFilePaths for (var i = 0; i < albumPaths.length; i++) { console.log('图片地址名称' + albumPaths[i]); wx.uploadFile({ url: app.appUrl + 'img', filePath: albumPaths[i], name: 'img', formData: { 'nickName': '123',//其他参数 'openid': 'xxssdazcs5gxxxaa',//其他参数 }, success(res) { console.log(res) } }) } } }) },
后端代码:
public function img(){ $file = request()->file('img'); $info = $file->move(ROOT_PATH . 'public' . DS . 'static/uploads/ceshi'); }