这最近在做一个教育类的小商城的微信小程序,用到了上传多个图片文件到服务器端。下面脚本之家小编给大家带来了tp5实现微信小程序多图片上传到服务器的方法,需要的朋友可以参考下
最近在做一个教育类的小商城的微信小程序,用到了上传多个图片文件到服务器端,这里做一个讲解,希望对大家有所帮助。1,小程序端:在wxml文件中:
<!--选择图片 --><view class="picture"><view class="img" wx:for="{{imgs}}" wx:for-item="item" wx:key="*this"><image class='imgSelected' src="{{item}}" data-index="{{index}}" mode="aspectFill" bindtap="previewImg"></image><view class="delete-btn" data-index="{{index}}" catchtap="deleteImg">删除</view></view><view class="clickImg" bindtap="chooseImg">点击上传作业</view></view><!-- 选择图片end -->
在js文件中
Page({/*** 页面的初始数据*/data: {index: 0,multiIndex: [0, 0],//传到后台的课程分类cname:'',},/*** 生命周期函数--监听页面加载*/onLoad: function (options) {},/**** 生命周期函数--监听页面初次渲染完成*/onReady: function () {},/*** 生命周期函数--监听页面显示*/onShow: function () {},/*** 生命周期函数--监听页面隐藏*/onHide: function () {},/*** 生命周期函数--监听页面卸载*/onUnload: function () {},/*** 页面相关事件处理函数--监听用户下拉动作*/onPullDownRefresh: function () {},/*** 页面上拉触底事件的处理函数*/onReachBottom: function () {},/*** 用户点击右上角分享*/onShareAppMessage: function () {},// 上传图片操作// 上传图片chooseImg: function (e) {var that = this;if(that.data.cname==''){}else{var imgs = this.data.imgs;if (imgs.length >= 9) {this.setData({lenMore: 1});setTimeout(function () {that.setData({lenMore: 0});}, 2500);return false;}wx.chooseImage({// count: 1, // 默认9sizeType: ['original', 'compressed'], // 可以指定是原图还是压缩图,默认二者都有sourceType: ['album', 'camera'], // 可以指定来源是相册还是相机,默认二者都有success: function (res) {// 返回选定照片的本地文件路径列表,tempFilePath可以作为img标签的src属性显示图片var tempFilePaths = res.tempFilePaths;var imgs = that.data.imgs;// console.log(tempFilePaths + '----');for (var i = 0; i < tempFilePaths.length; i++) {if (imgs.length >= 9) {that.setData({imgs: imgs});return false;} else {imgs.push(tempFilePaths[i]);}}// console.log(imgs);that.setData({imgs: imgs,});//循环把图片上传到服务器for (var i = 0; i < imgs.length; i++) {wx.uploadFile({url: url + 'Wx_SaveHomeWork',filePath: imgs[i],name: 'files',formData: {cname: that.data.cname},success: function (res) {console.log(res)}})}}});}},// 删除图片deleteImg: function (e) {var imgs = this.data.imgs;var index = e.currentTarget.dataset.index;imgs.splice(index, 1);this.setData({imgs: imgs});},// 预览图片previewImg: function (e) {//获取当前图片的下标var index = e.currentTarget.dataset.index;//所有图片var imgs = this.data.imgs;wx.previewImage({//当前显示图片current: imgs[index],//所有图片urls: imgs})},})
我们注意到我的wx.request请求中Wx_SaveHomeWork方法是后台服务器的接收图片方法,后边我会把这个方法展示出来,3.tp5后台controller中
//存取学生作业信息public function Wx_SaveHomeWork(){$files=\request()->file('files');$cname=\request()->param('cname');$cid=Db::name('course')->where('cname',$cname)->value('id');$max_id=Db::name('homework')->max('id');foreach($files as $item){// 移动到框架应用根目录/public/uploads/ 目录下$info = $files->rule('date')->move(ROOT_PATH . 'public' . DS . 'uploads');if($info){$saveName=str_replace("\\","/",$info->getSaveName());$img='/uploads/'.$saveName;$homework[]=['id'=>$max_id+1,'img'=>$img,'cid'=>$cid];}}//把数据插入到作业表中\db('homework')->insertAll($homework);}
相关推荐
© 2020 asciim码
人生就是一场修行