日日操夜夜添-日日操影院-日日草夜夜操-日日干干-精品一区二区三区波多野结衣-精品一区二区三区高清免费不卡

公告:魔扣目錄網為廣大站長提供免費收錄網站服務,提交前請做好本站友鏈:【 網站目錄:http://www.ylptlb.cn 】, 免友鏈快審服務(50元/站),

點擊這里在線咨詢客服
新站提交
  • 網站:51998
  • 待審:31
  • 小程序:12
  • 文章:1030137
  • 會員:747

前言:

由于小程序中 wx.uploadFile 的方法是異步上傳,不符合我們的需求,它自身目前暫時不支持同步上傳,所以需要我們手動處理。因為通常我們在上傳圖片時,可能是多張圖片上傳,將圖片上傳后還需要同字段數據再一起保存,所以需要同步來保存處理。通俗易懂來講就是:先圖片上傳返回圖片集合數據,再執行下一步保存,總之圖片上傳的動作和下一步保存的動作不能出現順序錯誤。先圖片再下一步數據一同保存,這理解為同步處理,如果順序不對,則理解為異步。

小程序page端:

<text class="word-class" style="font-size: 28rpx;">添加圖片:</text>
<!--以下為圖片選擇-->
<view class="img_box">
  <view class="imgs" wx:for="{{tempFilePaths}}" wx:key="index">
    <image src='{{item}}' bindlongpress="DeleteImg" bindtap="PreviewImg" data-index="{{index}}" mode='widthFix' />
  </view>
  <view class="imgs">
    <view class="images" bindtap="ChooseImg">
      <!--這里自行創建image文件夾,并添加choose.png,及中部加號-->
      <image src='/static/images/add.png' mode='widthFix' />
    </view>
  </view>
</view>

小程序css端

/* 選擇圖片 */
.img_box{
  width:690rpx;
  position:relative;
  display: flex;
  flex-wrap: wrap;
  margin:0 auto;
  padding-top: 20px;
}

.imgs{
  width:33.33333333%;
  display: flex;
  justify-content: center;
  margin-bottom:20rpx;
}

.imgs image{
  width:90%;
  max-height:212rpx;
  border:1px solid rgba(214, 212, 212, 0.1);
}

.imgs .images{
  position:relative;
}

.images button{
  width:100%;
  height:100%;
  position:absolute;
  top:0;
  left:0;
}

.img_box .images{
  width:90%;
  height: 212rpx;
  border:1px solid #E8E8E8;
  border-radius:4rpx;
  display: flex;
  align-items: center;
  justify-content: center;
}

.img_box .images>image{
  width:60rpx;
  height:60rpx;
}

小程序JS端:

let App = getApp();
// 工具類
let util = require('../../util/util')
// 接口地址
let api = require('../../config/api.js')
// 當前js的工具類
let custom = require('../../util/custom')
Page({
  data: {
    tempFilePaths: [],
    temp: [], // 多圖片緩存區
  },
  ChooseImg() {
    let that = this;
    wx.chooseImage({
      count: 9, // 默認最多9張圖片,可自行更改
      sizeType: ['original', 'compressed'], // 可以指定是原圖還是壓縮圖,默認二者都有
      sourceType: ['album', 'camera'], // 可以指定來源是相冊還是相機,默認二者都有
      success: res => {
        wx.showToast({
          title: '正在添加...',
          icon: 'loading',
          mask: true,
          duration: 1000
        })

        let fullName = res.tempFilePaths + "";
        let last = fullName.lastIndexOf(".");
        let suffix = fullName.substring(last + 1, fullName.length);
        // 只有圖片才可以上傳
        if (suffix == 'jpg' || suffix == 'png' || suffix == 'jpeg' || suffix == 'bmp') {
          that.data.temp.push(res.tempFilePaths + "");
        } else {
          wx.showModal({
            title: '提示',
            content: '圖片上傳錯誤',
            success: function (res) {
              if (res.confirm) {
                console.log('用戶點擊確定')
              } else {
                console.log('用戶點擊取消')
              }
            }
          });
        }
        let imgs = that.data.temp;
        that.setData({
          tempFilePaths: imgs
        })
        console.log(that.data.tempFilePaths)
      }
    })
  },
  //預覽圖片
  PreviewImg: function (e) {
    let index = e.target.dataset.index;
    let that = this;
    wx.previewImage({
      current: that.data.tempFilePaths[index],
      urls: that.data.tempFilePaths,
    })
  },
  //長按刪除圖片
  DeleteImg: function (e) {
    var that = this;
    var tempFilePaths = that.data.tempFilePaths;
    let temp = that.data.temp;
    var index = e.currentTarget.dataset.index;//獲取當前長按圖片下標
    wx.showModal({
      title: '提示',
      content: '確定要刪除此圖片嗎?',
      success: function (res) {
        if (res.confirm) {
          //console.log('點擊確定了');
          tempFilePaths.splice(index, 1);
          temp.splice(index, 1);
        } else if (res.cancel) {
          //console.log('點擊取消了');
          return false;
        }
        that.setData({
          tempFilePaths
        });
      }
    })
  },
  onLoad: function (options) {

  },
  onReady: function () {

  },
  cancelWork() {
    wx.navigateBack();
  },
  async saveWrok() {
    
    let that = this;
    var tempFilePaths = that.data.tempFilePaths;
    // 同步等待
    await custom.uploadImage(tempFilePaths).then(res => {
      return Promise.resolve(res)
    }).then(res => {
      // 同步等待返回的圖片地址集合
      let files = res;
      let param = {
        fild1:xxx, // 字段1
        filed2:xxx, // 字段2
        files: files, // 圖片地址集合
      }
      // 將圖片地址和字段一起保存
      util.http('https://xxx.cn/save', param,'GET').then(function (res) {
        if (res.code == 0) {
          // 判斷圖片
          // console.log("size:" + that.data.files.length)
          if (that.data.tempFilePaths.length < 1) {
            that.data.temp = [];
            that.data.tempFilePaths = [];
            wx.showModal({
              title: '提示',
              content: '圖片上傳錯誤',
              success: function (res) {
                if (res.confirm) {
                  console.log('用戶點擊確定')
                } else {
                  console.log('用戶點擊取消')
                }
              }
            });

            that.setData({
              tempFilePaths: [],
              temp: [],
            });
            return false;
          }
          util.showToast(res.data)
          wx.navigateBack();
        }
      });
    });

  },

  onShow: function () {
    // 頁面顯示

  },
  onHide: function () {
    // 頁面隱藏

  },
  onUnload: function () {
    // 頁面關閉

  },

})

圖片工具類 custom.js

// 工具類
let util = require('../util/util')
// 地址接口
let api = require('../config/api')

/**
 * 真正上傳方法
 * @param {圖片上傳接口} imgPath 
 * @param {圖片文件資源地址} filePath 
 */
function uploadList(imgPath, filePath) {
  return new Promise((resolve, reject) => {
    wx.uploadFile({
      url: imgPath,
      filePath: filePath + "", //獲取圖片路徑
      header: {
        'content-type': 'multipart/form-data'
      },
      name: 'file',
      success: function (res) {
        if (res.statusCode == 200) {
          resolve(res.data)
        } else {
          reject(err, res);
        }
      },
      fail: function (err) {
        reject(err, res);
      }
    });
  });
}

/**
 * 圖片上傳,多圖片上傳,同步處理一并返回-虛擬文件地址的list
 * @param {本地文件list} tempFilePaths 
 */
async function uploadImage(tempFilePaths = []) {
  let fileList = new Array();
  for (let i = 0; i < tempFilePaths.length; i++) {
    let data = await uploadList(api.workUpload, tempFilePaths[i]);
    // 進行設置返回
    let rt = JSON.parse(data);
    // 由于之前封裝的request方法為application/json類型,所以這里需要特殊處理返回的數據格式
    let url = (rt.url).replaceAll('"','');
    fileList.push(url);
  }
  return fileList;
}

module.exports = {
  orderWork, // list
  uploadImage, // 多張圖片上傳
}

分享到:
標簽:程序
用戶無頭像

網友整理

注冊時間:

網站:5 個   小程序:0 個  文章:12 篇

  • 51998

    網站

  • 12

    小程序

  • 1030137

    文章

  • 747

    會員

趕快注冊賬號,推廣您的網站吧!
最新入駐小程序

數獨大挑戰2018-06-03

數獨一種數學游戲,玩家需要根據9

答題星2018-06-03

您可以通過答題星輕松地創建試卷

全階人生考試2018-06-03

各種考試題,題庫,初中,高中,大學四六

運動步數有氧達人2018-06-03

記錄運動步數,積累氧氣值。還可偷

每日養生app2018-06-03

每日養生,天天健康

體育訓練成績評定2018-06-03

通用課目體育訓練成績評定