微信小程序 WeUI·Uploader

2022-05-12 17:40 更新

圖片上傳Uploader組件。

示例代碼:

{
  "usingComponents": {
    "mp-uploader": "../components/uploader/uploader",
    "mp-cells": "../components/cells/cells",
    "mp-cell": "../components/cell/cell"
  },
  "navigationBarTitleText": "UI組件庫(kù)"
}
<view class="page">
    <view class="page__hd">
        <view class="page__title">Uploader</view>
        <view class="page__desc">上傳組件</view>
    </view>
    <view class="page__bd">
        <mp-cells>
            <mp-cell>
                <mp-uploader bindfail="uploadError" bindsuccess="uploadSuccess" select="{{selectFile}}" upload="{{uplaodFile}}" files="{{files}}" max-count="5" title="圖片上傳" tips="圖片上傳提示"></mp-uploader>
            </mp-cell>
        </mp-cells>
    </view>
</view>
Page({
    data: {
        files: [{
            url: 'http://mmbiz.qpic.cn/mmbiz_png/VUIF3v9blLsicfV8ysC76e9fZzWgy8YJ2bQO58p43Lib8ncGXmuyibLY7O3hia8sWv25KCibQb7MbJW3Q7xibNzfRN7A/0',
        }, {
            loading: true
        }, {
            error: true
        }]
    },
    onLoad() {
        this.setData({
            selectFile: this.selectFile.bind(this),
            uplaodFile: this.uplaodFile.bind(this)
        })
    },
    chooseImage: function (e) {
        var that = this;
        wx.chooseImage({
            sizeType: ['original', 'compressed'], // 可以指定是原圖還是壓縮圖,默認(rèn)二者都有
            sourceType: ['album', 'camera'], // 可以指定來(lái)源是相冊(cè)還是相機(jī),默認(rèn)二者都有
            success: function (res) {
                // 返回選定照片的本地文件路徑列表,tempFilePath可以作為img標(biāo)簽的src屬性顯示圖片
                that.setData({
                    files: that.data.files.concat(res.tempFilePaths)
                });
            }
        })
    },
    previewImage: function(e){
        wx.previewImage({
            current: e.currentTarget.id, // 當(dāng)前顯示圖片的http鏈接
            urls: this.data.files // 需要預(yù)覽的圖片http鏈接列表
        })
    },
    selectFile(files) {
        console.log('files', files)
        // 返回false可以阻止某次文件上傳
    },
    uplaodFile(files) {
        console.log('upload files', files)
        // 文件上傳的函數(shù),返回一個(gè)promise
        return new Promise((resolve, reject) => {
            setTimeout(() => {
                reject('some error')
            }, 1000)
        })
    },
    uploadError(e) {
        console.log('upload error', e.detail)
    },
    uploadSuccess(e) {
        console.log('upload success', e.detail)
    }
});


屬性列表

屬性類型默認(rèn)值必填說(shuō)明
ext-classstring添加在組件內(nèi)部結(jié)構(gòu)的class,可用于修改組件內(nèi)部的樣式
titlestring組件標(biāo)題
tipsstring組件的提示
deleteboolean是否顯示刪除按鈕
size-typearray和chooseImage的sizeType參數(shù)一樣
source-typearray和chooseImage的sourceType參數(shù)一樣
max-sizenumber5 * 1024 * 1024圖片上傳的最大文件限制,默認(rèn)是5M
max-countnumber1圖片上傳的個(gè)數(shù)限制
filesarray<object>當(dāng)前的圖片列表
selectfunction選擇圖片時(shí)的過(guò)濾函數(shù),返回true表示圖片有效
uploadfunction圖片上傳的函數(shù),返回Promise,Promise的callback里面必須resolve({urls})表示成功,否則表示失敗
bindselecteventhandler圖片選擇觸發(fā)的事件,detail為{tempFilePaths, tempFiles, contents},其中tempFiles和tempFilePaths是chooseImage返回的字段,contents表示所選的圖片的二進(jìn)制Buffer列表
bindcanceleventhandler取消圖片選擇的事件,detail為{}
bindsuccesseventhandler圖片上傳成功的事件,detail為{urls},urls為upload函數(shù)上傳成功返回的urls參數(shù)
bindfaileventhandler圖片上傳失敗的事件,detail為{type, errMsg},type為1表示圖片超過(guò)大小限制,type為2表示選擇圖片失敗,type為3表示圖片上傳失敗。
binddeleteeventhandler刪除圖片觸發(fā)的事件,detail為{index, item},index表示刪除的圖片的下標(biāo),item為圖片對(duì)象。

files表示當(dāng)前的圖片列表,每一項(xiàng)的定義為

屬性類型默認(rèn)值必填說(shuō)明
urlstring圖片鏈接
loadingboolean圖片上傳中
errorboolean圖片上傳失敗


以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)