图片上传主要用到
1、wx.chooseImage(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 | 使用相机 |
属性 | 类型 | 说明 | 最低版本 |
---|---|---|---|
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 ??} })
将本地资源上传到服务器。客户端发起一个 HTTPS POST 请求,其中?content-type
?为?multipart/form-data
。使用前请注意阅读相关说明。
属性 | 类型 | 默认值 | 必填 | 说明 |
---|---|---|---|---|
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 | 否 | 接口调用结束的回调函数(调用成功、失败都会执行) |
属性 | 类型 | 说明 |
---|---|---|
data | string | 开发者服务器返回的数据 |
statusCode | number | 开发者服务器返回的 HTTP 状态码 |
基础库 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'); }