目錄
基礎用法
#上傳視頻
#文件預覽
#隱藏上傳按鈕
#限制上傳數(shù)量
#自定義上傳樣式
API
#Props
#Methods
#Slot
#Events
基礎用法
- 可以通過設置
fileList
參數(shù)(數(shù)組,元素為對象),顯示預置的圖片。其中元素的url
屬性為圖片路徑
<template>
<u-upload
:fileList="fileList1"
@afterRead="afterRead"
@delete="deletePic"
name="1"
multiple
:maxCount="10"
></u-upload>
</template>
<script>
export default {
data() {
return {
fileList1: [],
}
},
methods:{
// 刪除圖片
deletePic(event) {
this[`fileList${event.name}`].splice(event.index, 1)
},
// 新增圖片
async afterRead(event) {
// 當設置 multiple 為 true 時, file 為數(shù)組格式,否則為對象格式
let lists = [].concat(event.file)
let fileListLen = this[`fileList${event.name}`].length
lists.map((item) => {
this[`fileList${event.name}`].push({
...item,
status: 'uploading',
message: '上傳中'
})
})
for (let i = 0; i < lists.length; i++) {
const result = await this.uploadFilePromise(lists[i].url)
let item = this[`fileList${event.name}`][fileListLen]
this[`fileList${event.name}`].splice(fileListLen, 1, Object.assign(item, {
status: 'success',
message: '',
url: result
}))
fileListLen++
}
},
uploadFilePromise(url) {
return new Promise((resolve, reject) => {
let a = uni.uploadFile({
url: 'http://192.168.2.21:7001/upload', // 僅為示例,非真實的接口地址
filePath: url,
name: 'file',
formData: {
user: 'test'
},
success: (res) => {
setTimeout(() => {
resolve(res.data.data)
}, 1000)
}
});
})
},
}
}
</script>
#上傳視頻
- 通過設置
accept='video'
屬性,將上傳改為視頻上傳。
<u-upload
:fileList="fileList2"
@afterRead="afterRead"
@delete="deletePic"
name="2"
multiple
:maxCount="10"
accept="video"
></u-upload>
<!-- data 方法請參考 基本用法 -->
data(){
return{
fileList2: [],
}
}
#文件預覽
- 通過設置
:previewFullImage="true"'
屬性,達到文件預覽的目的。
<u-upload
:fileList="fileList3"
@afterRead="afterRead"
@delete="deletePic"
name="3"
multiple
:maxCount="10"
:previewFullImage="true"
></u-upload>
<!-- data 方法請參考 基本用法 -->
data(){
return{
fileList3: [{
url: 'https://cdn.uviewui.com/uview/swiper/1.jpg',
}],
}
}
#隱藏上傳按鈕
- 上傳數(shù)量等于
maxCount
所規(guī)定的數(shù)據(jù)時,隱藏上傳按鈕。
<u-upload
:fileList="fileList4"
@afterRead="afterRead"
@delete="deletePic"
name="4"
multiple
:maxCount="2"
></u-upload>
<!-- data 方法請參考 基本用法 -->
data(){
return{
fileList4: [{
url: 'https://cdn.uviewui.com/uview/swiper/1.jpg',
},
{
url: 'https://cdn.uviewui.com/uview/swiper/1.jpg',
}
],
}
}
#限制上傳數(shù)量
- 同上,規(guī)定
maxCount
的數(shù)據(jù)時。
<u-upload
:fileList="fileList5"
@afterRead="afterRead"
@delete="deletePic"
name="5"
multiple
:maxCount="3"
></u-upload>
<!-- data 方法請參考 基本用法 -->
data(){
return{
fileList5: [],
}
}
#自定義上傳樣式
- 添加
image
以自定義上傳樣式,達到身份證,銀行卡等不同場景需求。
<u-upload
:fileList="fileList6"
@afterRead="afterRead"
@delete="deletePic"
name="6"
multiple
:maxCount="1"
width="250"
height="150"
>
<image src="https://cdn.uviewui.com/uview/demo/upload/positive.png"
mode="widthFix" style="width: 250px;height: 150px;"></image>
</u-upload>
<!-- data 方法請參考 基本用法 -->
data(){
return{
fileList6: [],
}
}
API
#Props
參數(shù) | 說明 | 類型 | 默認值 | 可選值 |
---|---|---|---|---|
accept | 接受的文件類型,file 只支持H5 (只有微信小程序才支持把accept配置為all、media) |
String | image | all | media | image | file | video |
capture | 圖片或視頻拾取模式,當accept為image類型時設置capture可選額外camera可以直接調(diào)起攝像頭 | String | Array | ['album', 'camera'] | - |
compressed | 當accept為video時生效,是否壓縮視頻,默認為true | Boolean | true | false |
camera | 當accept為video時生效,可選值為back或front | String | back | - |
maxDuration | 當accept為video時生效,拍攝視頻最長拍攝時間,單位秒 | Number | 60 | true |
uploadIcon | 上傳區(qū)域的圖標,只能內(nèi)置圖標 | String | camera-fill | - |
uploadIconColor | 上傳區(qū)域的圖標的顏色 | String | #D3D4D6 | - |
useBeforeRead | 是否啟用(顯示/隱藏)組件 | Boolean | false | true |
previewFullImage | previewFullImage | Boolean | true | false |
maxCount | 最大選擇圖片的數(shù)量 | String | Number | 52 | - |
disabled | 是否啟用(顯示/隱藏)組件 | Boolean | false | true |
imageMode | 預覽上傳的圖片時的裁剪模式,和image組件mode屬性一致 | String | aspectFill | - |
name | 標識符,可以在回調(diào)函數(shù)的第二項參數(shù)中獲取 | String | file | - |
sizeType | original 原圖,compressed 壓縮圖,默認二者都有,H5無效 | Array<String> | ['original', 'compressed'] | - |
multiple | 是否開啟圖片多選,部分安卓機型不支持 | Boolean | false | true |
deletable | 是否顯示刪除圖片的按鈕 | Boolean | true | false |
maxSize | 選擇單個文件的最大大小,單位B(byte),默認不限制 | String | Number | Number.MAX_VALUE | - |
fileList | 顯示已上傳的文件列表 | Array | - | - |
uploadText | 上傳區(qū)域的提示文字 | String | - | - |
width | 內(nèi)部預覽圖片區(qū)域和選擇圖片按鈕的區(qū)域?qū)挾?,單位rpx,不能是百分比,或者auto
|
String | Number | 80 | - |
height | 內(nèi)部預覽圖片區(qū)域和選擇圖片按鈕的區(qū)域高度,單位rpx,不能是百分比,或者auto
|
String | Number | 80 | - |
previewImage | 是否在上傳完成后展示預覽圖 | Boolean | true | false |
#Methods
此方法如要通過ref手動調(diào)用
名稱 | 說明 |
---|---|
afterRead | 讀取后的處理函數(shù) |
beforeRead | 讀取前的處理函數(shù) |
#Slot
slot中您可以內(nèi)置任何您所需要的樣式。文章來源:http://www.zghlxwxcb.cn/news/detail-767129.html
名稱 | 說明 |
---|---|
-(default) | 自定義上傳樣式 |
#Events
回調(diào)參數(shù)中的event
參數(shù),為當前刪除元素的所有信息,index
為當前操作的圖片的索引,name
為刪除名稱,file
包含刪除的url信息文章來源地址http://www.zghlxwxcb.cn/news/detail-767129.html
事件名 | 說明 | 回調(diào)參數(shù) |
---|---|---|
afterRead | 讀取后的處理函數(shù) | (file, lists, name),錯誤信息 |
beforeRead | 讀取前的處理函數(shù) | (file, lists, name),錯誤信息 |
oversize | 圖片大小超出最大允許大小 | (file, lists, name), name為通過props 傳遞的index 參數(shù) |
clickPreview | 全屏預覽圖片時觸發(fā) | (url, lists, name),url為當前選中的圖片地址,index為通過props 傳遞的index 參數(shù) |
delete | 刪除圖片 | 傳遞index ?回調(diào) event 參數(shù) 包含index,file,name
|
到了這里,關(guān)于uniapp中uview組件庫的豐富Upload 上傳上午用法的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!