1. 程式人生 > >三十一、小程序上傳多張圖片帶參數

三十一、小程序上傳多張圖片帶參數

默認 inf led export EDA sed 預覽圖 態度 alt

技術分享圖片

WXML
<view class=‘right‘>
       <view class="parcel" wx:for="{{pics}}" wx:key="{{index}}">
       <!-- 頁面顯示的圖片 -->
       <image src="{{pics[index]}}" class="According" data-index="{{index}}" mode="aspectFill" bindtap="previewImg"></image>
       <!-- 刪除按鈕 -->
       <image src="{{staticImg}}home/order/apply/error.png" class=‘deleteimg‘ catchtap="deleteImg" data-index="{{index}}"></image>
       </view>
       <!-- 添加按鈕 -->
      <image src=‘/pages/home/carbeauty/service/img/add.png‘ class=‘add‘ bindtap=‘choose‘></image>
    </view>


JS
const app = getApp(); var uploadImg = require(‘/../../../../utils/uploadImg.js‘);
     // 圖片
    choose: function (e) {//這裏是選取圖片的方法
      var that = this;
      var pics = that.data.pics;
      wx.chooseImage({
        count: 5 - pics.length, // 最多可以選擇的圖片張數,默認9
        sizeType: [‘original‘, ‘compressed‘], // original 原圖,compressed 壓縮圖,默認二者都有
        sourceType: [‘album‘, ‘camera‘], // album 從相冊選圖,camera 使用相機,默認二者都有
        success: function (res) {
          var imgsrc = res.tempFilePaths;
          pics = pics.concat(imgsrc);
          console.log(pics);
          that.setData({
            pics: pics,
          });
        },
        fail: function () {
          // fail
        },
        complete: function () {
          // complete
        }
      })
  },

  // 刪除圖片
  deleteImg: function (e) {
    var pics = this.data.pics;
    var index = e.currentTarget.dataset.index;
    pics.splice(index, 1);
    this.setData({
      pics: pics
    });
  },
// 預覽圖片
  previewImg: function (e) {
    //獲取當前圖片的下標
    var index = e.currentTarget.dataset.index;
    //所有圖片
    var pics = this.data.pics;
    wx.previewImage({
      //當前顯示圖片
      current: pics[index],
      //所有圖片
      urls: pics
    })
  },
當點擊上傳按鈕時觸發上傳小程序的函數
// 提交評價
  SubmitEvaluation:function(){
    debugger
    var that = this;
    var attitude = that.data.attitude;
    var time = that.data.time;
    var efficiency = that.data.efficiency;
    var environment = that.data.environment;
    var professional = that.data.professional;
    var arr = [];
    if (attitude==true){
      arr.push(‘服務態度好‘)
    }
    if (time==true){
      arr.push(‘排隊時間短‘)
    }
    if (efficiency == true) {
      arr.push(‘效率高‘)
    }
    if (environment == true) {
      arr.push(‘門店環境好‘)
    }
    if (professional == true) {
      arr.push(‘很專業‘)
    }
    var str = arr.toString()
    var score = that.data.wjxScore;
    var evaluationDetails = that.data.textarea;
    var orderId = that.data.orderId;
    var pics = that.data.pics;
    var formData={
      orderId: orderId,
      evaluationDetails: evaluationDetails,
      tag: str,
      score: score
    }
//這一步就是調用方法
    uploadImg.uploadimg({
      url: app.washCar.evaluate,//這裏是你圖片上傳的接口
      path: pics,//這裏是選取的圖片的地址數組
      formData: formData,//其他的參數
    });
  }
})

  以下JS為封裝的上傳圖片函數

//多張圖片上傳
function uploadimg(data) {
  console.log(data)
  debugger
  var that = this,
    i = data.i ? data.i : 0,//當前上傳的哪張圖片
    success = data.success ? data.success : 0,//上傳成功的個數
    fail = data.fail ? data.fail : 0;//上傳失敗的個數
  wx.uploadFile({
    url: data.url,
    filePath: data.path[i],
    name: ‘fileData‘,
    formData: data.formData,//這裏是上傳圖片時一起上傳的數據
    success: (resp) => {
      console.log("上傳成功了")
      success++;
      console.log(resp)
      console.log(i);
      //這裏可能有BUG,失敗也會執行這裏,所以這裏應該是後臺返回過來的狀態碼為成功時,這裏的success才+1
    },
    fail: (res) => {
      fail++;
      console.log(‘fail:‘ + i + "fail:" + fail);
    },
    complete: () => {
      console.log(i);
      i++; //這個圖片執行完上傳後,開始上傳下一張
      if (i == data.path.length) { //當圖片傳完時,停止調用   
        console.log(‘執行完畢‘);
        console.log(‘成功:‘ + success + " 失敗:" + fail);
        // 返回到上一頁
        wx.navigateBack({
          delta:1
        })
      } else {//若圖片還沒有傳完,則繼續調用函數
        console.log(i);
        data.i = i;
        data.success = success;
        data.fail = fail;
        that.uploadimg(data);
      }
    }
  });
}
// 暴露方法
module.exports = {
  uploadimg: uploadimg
}

  

三十一、小程序上傳多張圖片帶參數