• 小程序+php实现多图片上传


    一、小程序页面

      ① .wxml页面

            <view class="list infor-pic-cont">
                    <view class="text-btn">
                        <view class="title">上传清运资质</view>
                        <button bindtap="previewImg">上传图片</button>
                    </view>
                    <view class="picCont" wx:for="{{cleanImgArr}}" wx:key="{{index}}" wx:if="{{!cleanImgArrB}}">
                        <image src="{{item}}" mode='aspectFill' data-index="{{index}}"></image>
                        <icon class="delete-pic-icon" type="cancel" bindtap="deleteImg" type="clear" data-index="{{index}}"/> 
                    </view>
                </view>
                 <view class="list infor-pic-cont">
                    <view class="text-btn">
                        <view class="title">上传合同材料</view>
                        <button bindtap="previewImgHT">上传图片</button>
                    </view>
                    <view class="picCont" wx:for="{{cleanImgArr1}}" wx:key="{{index}}" wx:if="{{!cleanImgArrB}}">
                        <image src="{{item}}" mode='aspectFill' data-index="{{index}}"></image>
                        <icon class="delete-pic-icon" type="cancel" bindtap="deleteImg1" type="clear" data-index="{{index}}"/> 
                    </view>
                </view> 
            </view>        

    ② .js页面

    data: {
        company:'',
        person:'',
        workperson:'',
        workphone:'',
        cleanImgArr: [ ],   //保存上传图片url的数组
        cleanImgArr1: [ ],   //保存上传图片url的数组
        images: [],
        cleanImgID: [],
        cleanImgID2: [],
        windowBox: false,
        cleanImgArrB: false,
      },
     previewImg: function(e){
        var that = this;
        wx.chooseImage({
          count: 9,     //默认9张图片
          sizeType:['original','compressed'],    //指定图片为原图或者缩略图,默认二者都有
          sourceType:['album','camera'],      //指定来源是相机或相册选取,默认二者都有  
          success: function(res){
            that.setData({
              cleanImgArr:res.tempFilePaths,
            })
          var length = res.tempFilePaths.length;
          that.setData({
            cleanImgID:[],
          })
           for(var i = 0; i < length; i++){
              wx.uploadFile({
                url: 'xxx',      //清运资质url
                filePath: res.tempFilePaths[i],
                name: 'file',
                header: {
                  'Content-Type': "multipart/form-data"
                },
                method:'POST',
                success: function (res) {
                  var jsarr=JSON.parse( res.data);
                  that.data.cleanImgID.push(jsarr.res);
                }
              })
            }
          }
        })
      },
     //上传合同资料图片
     previewImgHT: function(e){
      var that = this;
      wx.chooseImage({
        count: 9,     //默认9张图片
        sizeType:['original','compressed'],    //指定图片为原图或者缩略图,默认二者都有
        sourceType:['album','camera'],     //指定来源是相机或相册选取,默认二者都有
        success: function(res){
          that.setData({
            cleanImgArr1: res.tempFilePaths
          })
    
          var length = res.tempFilePaths.length;
          for(var i = 0; i < length; i++){ 
            that.setData({
              cleanImgID2: [ ]
            })
            wx.uploadFile({
              url: 'xxx',      //合同url
              filePath: res.tempFilePaths[i],
              name: 'file',
              header: {
                'Content-Type': "multipart/form-data"
              },
              method:'POST',
              success: function (res) {
               var jsarr2=JSON.parse(res.data);
                that.data.cleanImgID2.push(jsarr2.data);
              }
            })
          }
        }
      })
    },
    
    //删除清运资质图片
    deleteImg: function (e) {
    var that = this;
    var cleanImgArr = that.data.cleanImgArr;
    var index = e.currentTarget.dataset.index;//获取当前长按图片下标
    wx.showModal({
     title: '提示',
     content: '确定要删除此图片吗?',
     success: function (res) {
      if (res.confirm) {
       cleanImgArr.splice(index, 1);
        that.setData({
          cleanImgArr:cleanImgArr
        })
      
      } else if (res.cancel) {
        return false;
       }
     }
    })
    },

    上传表单:

      wx.request({
        url: 'xxx',
        // filePath: that.data.itemPic,
        // name: "file",
        data:{
          company: e.detail.value.company,     //单位名称
          qualifica:JSON.stringify(that.data.cleanImgID),  //清运资质
          contractImg:JSON.stringify(that.data.cleanImgID2),   //合同材
        },
        header: {
          'content-type': 'application/json' // 默认值
      },
      success: function (res) {
     
        that.setData({
          windowBox:true,
        })
     
        }
      })
    
    }
    },

    php页面 (图片上传oss)

        //上传清运资质
        public function cleanImg()
        {
            $file = $_FILES;
            $rand=rand(1111,9999);
            $str = substr($file['file']['name'], strrpos($file['file']['name'], '.') + 1);//截取后缀名
            if ($str == "jpg" || $str == "jpeg" || $str == "BMP" || $str == "PNG" || $str == "GIF") {
                $faceimg = 'faceimdg/' . $rand . '.' . $str;//要保存的图片名称
                //图片存入oss
                $accessKeyId = config('aliyun_oss.accessKeyId');//去阿里云后台获取秘钥
                $accessKeySecret = config('aliyun_oss.accessKeySecret');//去阿里云后台获取秘钥
                $endpoint = config('aliyun_oss.endpoint');//你的阿里云oss地址
                $ossClient = new OssClient($accessKeyId, $accessKeySecret, $endpoint);
                $bucket = "xxx";
                //   判断bucketname是否存在,不存在就去创建
                if (!$ossClient->doesBucketExist($bucket)) {
                    $ossClient->createBucket($bucket);
                 }
                $files = $file['file']["tmp_name"];
                try {
                    $ossClient->uploadFile($bucket, $faceimg, $files);
                } catch (OssException $e) {
                    $e->getErrorMessage();
                }
                $arr = ['code' => 1000, 'msg' => 'success','res'=>$faceimg];
                return $arr;
    
            }
        }

    思路:多张图片上传oss,上传成功返回图片路径,前台拼接后与其他变量一起提交表单,入库

    效果图:

  • 相关阅读:
    纯 CSS3 卡通小火车行驶动画
    SVG 和 CSS3 实现一个超酷爱心 Like 按钮
    【转载】尝试解决在构造函数中同步调用Dns.GetHostAddressesAsync()引起的线程死锁
    Centos7 安装k8s
    [转载]log4net 的 MDC、NDC、ThreadContext 和 LogicalThreadContext
    用date获取时间戳
    k8s 排错方式总结
    glusterfs 相关总结
    kubernets 异构部署
    清除 glusterfs brick 信息
  • 原文地址:https://www.cnblogs.com/chaihtml/p/12957493.html
Copyright © 2020-2023  润新知