欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

vue iView 上傳組件之手動(dòng)上傳功能

 更新時(shí)間:2018年03月16日 08:40:40   作者:BaiLin  
iView 主要服務(wù)于 PC 界面的中后臺(tái)業(yè)務(wù),是一套高質(zhì)量的開源 UI 組件庫(kù)。這篇文章主要介紹了iView 上傳組件之手動(dòng)上傳功能,需要的朋友可以參考下

基于 Vue 的 UI 組件庫(kù)現(xiàn)在已經(jīng)有很多了,尤其是移動(dòng)端的?,F(xiàn)在又多了一個(gè) iView 。

iView 主要服務(wù)于 PC 界面的中后臺(tái)業(yè)務(wù),是一套高質(zhì)量的開源 UI 組件庫(kù),先上地址:

https://github.com/iview/iview

官網(wǎng)是:

https://www.iviewui.com/

特性

  • 使用單文件的 Vue 組件化開發(fā)模式
  • 基于 npm + webpack + babel 開發(fā),支持 ES2015
  • 高質(zhì)量、功能豐富
  • 友好的 API ,自由靈活地使用空間
  • 詳細(xì)、友好的文檔,事無(wú)巨細(xì)

最近做一個(gè)后臺(tái)系統(tǒng)用的功能 總結(jié)下遇見的問(wèn)題

功能需求點(diǎn)

  • 上傳選擇文件 判斷文件格式
  • 保存需要上傳的文件,展示文件名
  • 提供刪除文件功能(未上傳前)
  • 上傳文件

iView 提供的上傳組件

<Upload
 multiple
 ref="upload"
 :before-upload="handleUpload"
 :show-upload-list="false"
 :on-success="uploadSuccess"
 action="http://jsonplaceholder.typicode.com/posts/">
 <Button type="ghost" icon="ios-cloud-upload-outline">瀏覽</Button>
</Upload>
<div v-for="(item, index) in file">Upload file: {{ item.name }} 
 <a href="javascript:;" rel="external nofollow" @click="delectFile(item.name)">X</a>
 <Button style="margin-left:30px;"
  size="small"
  v-if="index === 0"
![](https://user-gold-cdn.xitu.io/2018/3/14/16223a8c12c38be9?w=649&h=743&f=png&s=55740)
  type="primary"
  @click="upload"
  :loading="loadingStatus">上傳</Button>
</div>

用到的API參數(shù) / 方法

  • multiple : 是否支持多選文件 默認(rèn) false
  • before-upload:上傳文件這前的事件鉤子,若返回 false 或者 Promise 則停止自動(dòng)上傳
  • show-upload-list: 是否顯示已上傳文件列表 默認(rèn)為true
  • on-success: 上傳文件成功后的事件鉤子,返回 res(接口方返回的信息), file(上傳文件), fileList(上傳文件List)
  • action: 文件上傳地址

上傳選擇文件 判斷文件格式 保存文件

選擇文件后會(huì)調(diào)用方法,在里面做的事情有 判斷文件類型是否滿足需求,如果滿足就保存到需要上傳的文件List里,這里我們需要自己定義一個(gè)keyID,應(yīng)為是動(dòng)上傳需要展示,刪除功能,如果沒有唯一ID不知道刪除那個(gè)

這里如果允許文件上傳了不用但心什么,此鉤子會(huì)把選擇的當(dāng)數(shù)組一樣需要調(diào)用上文件事件前的鉤子事件,所以也不能但心多文件選擇只會(huì)生成一個(gè)KeyID

handleUpload (file) { // 上傳文件前的事件鉤子
 // 選擇文件后 這里判斷文件類型 保存文件 自定義一個(gè)keyid 值 方便后面刪除操作
 let keyID = Math.random().toString().substr(2);
 file['keyID'] = keyID;
 // 保存文件到總展示文件數(shù)據(jù)里
 this.file.push(file);
 // 保存文件到需要上傳的文件數(shù)組里
 this.uploadFile.push(file)
 // 返回 falsa 停止自動(dòng)上傳 我們需要手動(dòng)上傳
 return false;
}

刪除功能

delectFile (keyID) { // 刪除文件
 // 刪除總展示文件里的當(dāng)前文件
 this.file = this.file.filter(item => {
  return item.name != name
 })
 // 刪除需要上傳文件數(shù)據(jù)里的當(dāng)前文件
 this.uploadFile = this.uploadFile.filter(item => {
  return item.KeyID != keyID
 })
}

上傳文件

upload () { // 上傳文件
 for (let i = 0; i < this.uploadFile.length; i++) {
  let item = this.file[i]
  this.$refs.upload.post(item);
 }
},

這里如果是多文件的時(shí)候需要循環(huán)上傳一個(gè)一個(gè)來(lái),如果一次上傳多個(gè)組件會(huì)報(bào)錯(cuò),只支持一次上傳一個(gè)文件,希望iView 以后會(huì)支持一次上傳多個(gè)吧,這個(gè)上傳我開始一直找不到,不知道手動(dòng)上傳停止自己上傳后怎么手動(dòng)傳,找功能找半天,在官方文檔里也沒有寫,官方到是有一個(gè)例子手動(dòng)上傳的但:

 

并沒有事實(shí)上傳的操作 這里也只是模擬啦 上傳方法是在源碼里找到的

上傳成功后

應(yīng)該我們的上傳文件功能和提交整個(gè)頁(yè)面的數(shù)據(jù)是分開的 所以提交數(shù)據(jù)的時(shí)候需要驗(yàn)證選擇文件是否以上傳在上傳成功事件里讓后右把我們傳過(guò)去的數(shù)據(jù)返出來(lái)做清空待上傳文件數(shù)組里的數(shù)據(jù),提交數(shù)據(jù)時(shí)候只需要判斷待上傳文件數(shù)組是否為空就可以了

文件上傳回調(diào)返回三個(gè)參數(shù)

  • res 上傳結(jié)果 成功與失敗 上傳之后的地址
  • file 此次上傳的文件
uploadSuccess (res, file) { // 文件上傳回調(diào) 上傳成功后刪除待上傳文件
 console.log(response)
 console.log(file)
},

這里有個(gè)小問(wèn)題 應(yīng)該上傳的時(shí)候是循環(huán)調(diào)用上傳的,如果多個(gè)文件上傳這里會(huì)有多個(gè)回調(diào)結(jié)果不能成功一個(gè)文件提示用戶一次,所以需要處理一下,這里自定義一個(gè)數(shù)每次回調(diào)回來(lái)作自增處理,當(dāng)值與上待上傳文件的length 相等時(shí)才提示上傳結(jié)果

完整代碼GitHub地址 https://github.com/bailin240/ArticleCode/tree/master/view/iViewUpload

總結(jié)

以上所述是小編給大家介紹的vue iView 上傳組件之手動(dòng)上傳功能,希望對(duì)大家有所幫助,如果大家有任何疑問(wèn)請(qǐng)給我留言,小編會(huì)及時(shí)回復(fù)大家的。在此也非常感謝大家對(duì)腳本之家網(wǎng)站的支持!

相關(guān)文章

  • 你可能不知道的CORS跨域資源共享

    你可能不知道的CORS跨域資源共享

    這篇文章主要給大家介紹了關(guān)于CORS跨域資源共享的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者使用CORS具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-03-03
  • 微信小程序使用navigator實(shí)現(xiàn)頁(yè)面跳轉(zhuǎn)功能

    微信小程序使用navigator實(shí)現(xiàn)頁(yè)面跳轉(zhuǎn)功能

    本周學(xué)習(xí)了navigtor到導(dǎo)航組件,目前我想使用navigtor組件實(shí)現(xiàn)跳轉(zhuǎn)以及返回功能,下面這篇文章主要給大家介紹了關(guān)于微信小程序使用navigator實(shí)現(xiàn)頁(yè)面跳轉(zhuǎn)功能的相關(guān)資料,文中通過(guò)實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2022-08-08
  • 前端實(shí)現(xiàn)文件的斷點(diǎn)續(xù)傳(前端文件提交+后端PHP文件接收)

    前端實(shí)現(xiàn)文件的斷點(diǎn)續(xù)傳(前端文件提交+后端PHP文件接收)

    本文通過(guò)斷點(diǎn)續(xù)傳的簡(jiǎn)單例子(前端文件提交+后端PHP文件接收),本文以圖片為實(shí)例給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,感興趣的朋友一起看看吧
    2016-11-11
  • Object.keys()、Object.values()、Object.entries()用法總結(jié)

    Object.keys()、Object.values()、Object.entries()用法總結(jié)

    本文主要介紹了Object.keys()、Object.values()、Object.entries()用法總結(jié),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2023-04-04
  • JS代碼計(jì)算LocalStorage容量示例詳解

    JS代碼計(jì)算LocalStorage容量示例詳解

    這篇文章主要為大家介紹了JS代碼計(jì)算LocalStorage容量的示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-07-07
  • Nest.js快速啟動(dòng)API項(xiàng)目過(guò)程詳解

    Nest.js快速啟動(dòng)API項(xiàng)目過(guò)程詳解

    這篇文章主要為大家介紹了Nest.js快速啟動(dòng)API項(xiàng)目過(guò)程詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-10-10
  • JavaScript中解決多瀏覽器兼容性23個(gè)問(wèn)題的快速解決方法

    JavaScript中解決多瀏覽器兼容性23個(gè)問(wèn)題的快速解決方法

    下面小編就為大家?guī)?lái)一篇JavaScript中解決多瀏覽器兼容性23個(gè)問(wèn)題的快速解決方法。小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2016-05-05
  • 極品源碼:自動(dòng)完成 仿163篇

    極品源碼:自動(dòng)完成 仿163篇

    極品源碼:自動(dòng)完成 仿163篇...
    2007-07-07
  • JS復(fù)制到剪貼板示例代碼

    JS復(fù)制到剪貼板示例代碼

    復(fù)制到剪貼板的實(shí)現(xiàn)方法有很多,在本文將為大家詳細(xì)介紹下使用js是如何實(shí)現(xiàn)的,感興趣的朋友不要錯(cuò)過(guò)
    2013-10-10
  • JavaScript 十六進(jìn)制RGB色碼轉(zhuǎn)換器

    JavaScript 十六進(jìn)制RGB色碼轉(zhuǎn)換器

    JavaScript 十六進(jìn)制RGB色碼轉(zhuǎn)換器,大家可以學(xué)習(xí)下思路。
    2009-08-08

最新評(píng)論