这最近在做一个教育类的小商城的微信小程序,用到了上传多个图片文件到服务器端。下面脚本之家小编给大家带来了tp5实现微信小程序多图片上传到服务器的方法,需要的朋友可以参考下

最近在做一个教育类的小商城的微信小程序,用到了上传多个图片文件到服务器端,这里做一个讲解,希望对大家有所帮助。
1,小程序端:
在wxml文件中:

  1. <!--选择图片 -->
  2. <view class="picture">
  3. <view class="img" wx:for="{{imgs}}" wx:for-item="item" wx:key="*this">
  4. <image class='imgSelected' src="{{item}}" data-index="{{index}}" mode="aspectFill" bindtap="previewImg"></image>
  5. <view class="delete-btn" data-index="{{index}}" catchtap="deleteImg">删除</view>
  6. </view>
  7. <view class="clickImg" bindtap="chooseImg">点击上传作业</view>
  8. </view>
  9. <!-- 选择图片end -->

在js文件中

  1. Page({
  2. /**
  3. * 页面的初始数据
  4. */
  5. data: {
  6. index: 0,
  7. multiIndex: [0, 0],
  8. //传到后台的课程分类
  9. cname:'',
  10. },
  11. /**
  12. * 生命周期函数--监听页面加载
  13. */
  14. onLoad: function (options) {
  15. },
  16. /**
  17. *
  18. * 生命周期函数--监听页面初次渲染完成
  19. */
  20. onReady: function () {
  21. },
  22. /**
  23. * 生命周期函数--监听页面显示
  24. */
  25. onShow: function () {
  26. },
  27. /**
  28. * 生命周期函数--监听页面隐藏
  29. */
  30. onHide: function () {
  31. },
  32. /**
  33. * 生命周期函数--监听页面卸载
  34. */
  35. onUnload: function () {
  36. },
  37. /**
  38. * 页面相关事件处理函数--监听用户下拉动作
  39. */
  40. onPullDownRefresh: function () {
  41. },
  42. /**
  43. * 页面上拉触底事件的处理函数
  44. */
  45. onReachBottom: function () {
  46. },
  47. /**
  48. * 用户点击右上角分享
  49. */
  50. onShareAppMessage: function () {
  51. },
  52. // 上传图片操作
  53. // 上传图片
  54. chooseImg: function (e) {
  55. var that = this;
  56. if(that.data.cname==''){
  57. }else{
  58. var imgs = this.data.imgs;
  59. if (imgs.length >= 9) {
  60. this.setData({
  61. lenMore: 1
  62. });
  63. setTimeout(function () {
  64. that.setData({
  65. lenMore: 0
  66. });
  67. }, 2500);
  68. return false;
  69. }
  70. wx.chooseImage({
  71. // count: 1, // 默认9
  72. sizeType: ['original', 'compressed'], // 可以指定是原图还是压缩图,默认二者都有
  73. sourceType: ['album', 'camera'], // 可以指定来源是相册还是相机,默认二者都有
  74. success: function (res) {
  75. // 返回选定照片的本地文件路径列表,tempFilePath可以作为img标签的src属性显示图片
  76. var tempFilePaths = res.tempFilePaths;
  77. var imgs = that.data.imgs;
  78. // console.log(tempFilePaths + '----');
  79. for (var i = 0; i < tempFilePaths.length; i++) {
  80. if (imgs.length >= 9) {
  81. that.setData({
  82. imgs: imgs
  83. });
  84. return false;
  85. } else {
  86. imgs.push(tempFilePaths[i]);
  87. }
  88. }
  89. // console.log(imgs);
  90. that.setData({
  91. imgs: imgs,
  92. });
  93. //循环把图片上传到服务器
  94. for (var i = 0; i < imgs.length; i++) {
  95. wx.uploadFile({
  96. url: url + 'Wx_SaveHomeWork',
  97. filePath: imgs[i],
  98. name: 'files',
  99. formData: {
  100. cname: that.data.cname
  101. },
  102. success: function (res) {
  103. console.log(res)
  104. }
  105. })
  106. }
  107. }
  108. });
  109. }
  110. },
  111. // 删除图片
  112. deleteImg: function (e) {
  113. var imgs = this.data.imgs;
  114. var index = e.currentTarget.dataset.index;
  115. imgs.splice(index, 1);
  116. this.setData({
  117. imgs: imgs
  118. });
  119. },
  120. // 预览图片
  121. previewImg: function (e) {
  122. //获取当前图片的下标
  123. var index = e.currentTarget.dataset.index;
  124. //所有图片
  125. var imgs = this.data.imgs;
  126. wx.previewImage({
  127. //当前显示图片
  128. current: imgs[index],
  129. //所有图片
  130. urls: imgs
  131. })
  132. },
  133. })

我们注意到我的wx.request请求中Wx_SaveHomeWork方法是后台服务器的接收图片方法,
后边我会把这个方法展示出来,
3.tp5后台controller中

  1. //存取学生作业信息
  2. public function Wx_SaveHomeWork(){
  3. $files=\request()->file('files');
  4. $cname=\request()->param('cname');
  5. $cid=Db::name('course')->where('cname',$cname)->value('id');
  6. $max_id=Db::name('homework')->max('id');
  7. foreach($files as $item){
  8. // 移动到框架应用根目录/public/uploads/ 目录下
  9. $info = $files->rule('date')->move(ROOT_PATH . 'public' . DS . 'uploads');
  10. if($info){
  11. $saveName=str_replace("\\","/",$info->getSaveName());
  12. $img='/uploads/'.$saveName;
  13. $homework[]=['id'=>$max_id+1,'img'=>$img,'cid'=>$cid];
  14. }
  15. }
  16. //把数据插入到作业表中
  17. \db('homework')->insertAll($homework);
  18. }

更多相关文章

  1. Android(安卓)Input输入系统之一:KeyEvent事件监听
  2. android上传图片和参数(属性)到服务器
  3. Android开发学习:ImageView的scaletype属性
  4. Android中Selector的用法(改变ListView和Button的默认背景)
  5. Android有效解决加载大图片时内存溢出的问题
  6. Android(安卓)Bitmap理解
  7. GifView——Android显示GIF动画
  8. 【Android】android:padding属性设置对ImageButton无效问题
  9. Android:如何显示网络图片

随机推荐

  1. JQuery攻略(三)数组与字符串
  2. jsf中获取属性值的普通获取和jquery获取
  3. jQuery中filter()和find()的区别深入了解
  4. 有关下拉框jquery里的change事件无法触发
  5. 使用AJAX将动态数据传递给mvc控制器
  6. jquery.countdown 倒计时插件的学习
  7. jQuery ajax问题 - 无法让我的函数工作
  8. JQuery 表单验证按钮提交之前变色
  9. 如何退色改变背景图像
  10. 怎么让CSS动画走的慢一点啊。