最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Vue導(dǎo)入excel表,導(dǎo)入失敗的數(shù)據(jù)自動下載

 更新時間:2021年11月25日 10:46:54   作者:前端不釋卷leo  
本文詳細(xì)講解了Vue導(dǎo)入excel表,導(dǎo)入失敗的數(shù)據(jù)自動下載的方法,文中通過示例代碼介紹的非常詳細(xì)。對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧

有這么一個需求:一個導(dǎo)入按鈕,點擊按鈕導(dǎo)入excel表,如果excel表中部分?jǐn)?shù)據(jù)導(dǎo)入失敗,則自動下載該部分導(dǎo)入失敗數(shù)據(jù)的excel表,如果全部導(dǎo)入成功,則提示“導(dǎo)入成功”。

首先附上ElementUI的上傳文件組件

Element - The world's most popular Vue UI framework

Element,一套為開發(fā)者、設(shè)計師和產(chǎn)品經(jīng)理準(zhǔn)備的基于 Vue 2.0 的桌面端組件庫

https://element.eleme.cn/#/zh-CN/component/upload

官網(wǎng)詳細(xì)介紹upload組件的屬性和使用方法,就不展開了,這里主要通過使用它實現(xiàn)開篇的導(dǎo)入excel表的需求。(在vue項目中需要引入ElementUI庫,詳細(xì)步驟請查閱官網(wǎng))

1、引入ElementUI上傳組件upload

<el-upload
  class="upload-demo"
  action="https://jsonplaceholder.typicode.com/posts/"
  multiple
  :auto-upload="false"
  :file-list="fileList"
  :on-change="fileChange">
  <el-button type="primary">導(dǎo)入</el-button>
</el-upload>

頁面效果

屬性介紹

屬性 說明 類型
action 必選參數(shù),上傳的地址 string
multiple 是否支持多選文件 boolean
auto-upload 是否在選取文件后立即進(jìn)行上傳 boolean
auto-upload我們設(shè)置為false,避免自動上傳,以便使用自定義上傳方式。
file-list 上傳的文件列表, 例如: [{name: 'food.jpg', url: 'https://xxx.cdn.com/xxx.jpg'}] array
on-change 文件狀態(tài)改變時的鉤子,添加文件、上傳成功和上傳失敗時都會被調(diào)用 function(file, fileList)

2、點擊導(dǎo)入按鈕,選擇文件(點擊“打開”觸發(fā)on-change)

此時可以通過fileChange方法在控制臺打印查看文件結(jié)構(gòu)

fileChange(file,fileList){
  console.log(file,'file')
  console.log(fileList,'fileList')
}

3、此時我們已經(jīng)拿到選擇的文件,可以自定義上傳方式,將其發(fā)送至后端服務(wù)器

fileChange(file,fileList){
  console.log(file,'file')
  console.log(fileList,'fileList')
  let url = 'xxx'  //后端服務(wù)器API
  let headers = {
    'Content-Type':'multipart/form-data'   //自定義上傳時,該請求頭參數(shù)必填
  }
  let formData = ''
  for(let i = 0;i < fileList.length;i++){  //遍歷文件數(shù)組,fileList有可能存在多個文件
    formData = new FormData()
    formData.append('name',fileList[i].name)
    formData.append('type','.xlsx')
    formData.append('file',fileList[i].raw)
  }
  this.$axios({
    headers: headers,
    method: 'post',
    data: formData,
    url: url,
    responseType:'blob'   //該參數(shù)必填,不然下載下來的excel表會提示文件損壞,無法打開
  }).then(res=>{
    if(res && res.data.size == 0){
      //若后臺不返回流,說明全部數(shù)據(jù)導(dǎo)入成功,提示“導(dǎo)入成功”,不自動下載
      return
    }
    //如果后臺返回流,說明部分?jǐn)?shù)據(jù)導(dǎo)入失敗,則自動下載導(dǎo)入失敗數(shù)據(jù)的excel表
    let name = '導(dǎo)入失敗數(shù)據(jù).xlsx'     //自定義下載excel表名
    let blob = new Blob([res.data])
    let url = window.URL.createObjectURL(blob)
    let aLink = document.createElement('a')
    aLink.style.display = 'none'
    aLink.href = url
    //download 屬性定義了下載鏈接的地址。href 屬性必須在 <a> 標(biāo)簽中指定。
    aLink.setAttribute('download',name) 
    document.body.appendChild(aLink)
    aLink.click()
    document.body.removeChild(aLink)
    window.URL.revokeObjectURL(url)
    //下載結(jié)束之后可以執(zhí)行其他操作,如刷新列表、友好提示等
  })
}

方法解析

formData是ajax2.0(XMLHttpRequest Level2)新提出的接口,利用FormData對象可以將form表單元素的namevalue進(jìn)行組合,實現(xiàn)表單數(shù)據(jù)的序列化,從而進(jìn)行表單元素的拼接,提高工作效率。appendFormData 中添加新的屬性值,如果FormData 對應(yīng)的屬性值存在則覆蓋原值,否則新增一項屬性值。

Blob 對象表示一個不可變、原始數(shù)據(jù)的類文件對象。它的數(shù)據(jù)可以按文本或二進(jìn)制的格式進(jìn)行讀取,也可以轉(zhuǎn)換成 ReadableStream來用于數(shù)據(jù)操作。?

URL.createObjectURL() 靜態(tài)方法會創(chuàng)建一個 DOMString,其中包含一個表示參數(shù)中給出的對象的URL。這個 URL 的生命周期和創(chuàng)建它的窗口中的 document綁定。這個新的URL 對象表示指定的 File對象或 Blob對象。

URL.revokeObjectURL() 靜態(tài)方法用來釋放一個之前已經(jīng)存在的、通過調(diào)用 URL.createObjectURL() 創(chuàng)建的 URL 對象。當(dāng)你結(jié)束使用某個 URL 對象之后,應(yīng)該通過調(diào)用這個方法來讓瀏覽器知道不用在內(nèi)存中繼續(xù)保留對這個文件的引用了。

總結(jié):以上實現(xiàn)了自定義導(dǎo)入excel表,且自動下載接口返回的流,代碼可以直接使用,但是請注意返回的數(shù)據(jù)response不一定與我的相同,具體看聯(lián)調(diào)接口的返回數(shù)據(jù)。

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • vue.js數(shù)據(jù)綁定操作詳解

    vue.js數(shù)據(jù)綁定操作詳解

    這篇文章主要介紹了vue.js數(shù)據(jù)綁定操作,結(jié)合實例形式詳細(xì)分析了vue.js數(shù)據(jù)綁定的各種常見操作技巧與相關(guān)注意事項,需要的朋友可以參考下
    2018-04-04
  • 在Vue中解決跨域問題的常用方式

    在Vue中解決跨域問題的常用方式

    跨域問題是由瀏覽器引起的安全限制,而不是Vue框架本身導(dǎo)致的,Vue本身并不限制跨域訪問,它只是一個前端框架,負(fù)責(zé)構(gòu)建用戶界面和處理數(shù)據(jù)邏輯,本文給大家介紹了在Vue中解決跨域問題的常用方式,需要的朋友可以參考下
    2023-10-10
  • Vue3.0的優(yōu)化總結(jié)

    Vue3.0的優(yōu)化總結(jié)

    在本篇文章里小編給大家整理的是一篇關(guān)于Vue3.0的優(yōu)化總結(jié)內(nèi)容,有需要的朋友們可以學(xué)習(xí)下。
    2020-10-10
  • 詳解Vue.js 可拖放文本框組件的使用

    詳解Vue.js 可拖放文本框組件的使用

    這篇文章主要介紹了詳解Vue.js 可拖放文本框組件的相關(guān)資料,幫助大家更好的理解和學(xué)習(xí)使用vue框架,感興趣的朋友可以了解下
    2021-03-03
  • vue3中使用vuedraggable實現(xiàn)拖拽el-tree數(shù)據(jù)分組功能

    vue3中使用vuedraggable實現(xiàn)拖拽el-tree數(shù)據(jù)分組功能

    這篇文章主要介紹了vue3中使用vuedraggable實現(xiàn)拖拽el-tree數(shù)據(jù)分組功能,可以實現(xiàn)單個拖拽、雙擊添加、按住ctrl鍵實現(xiàn)多個添加,或者按住shift鍵實現(xiàn)范圍添加,添加到框中的數(shù)據(jù),還能拖拽排序,需要的朋友可以參考下
    2024-02-02
  • 對vue 鍵盤回車事件的實例講解

    對vue 鍵盤回車事件的實例講解

    今天小編就為大家分享一篇對vue 鍵盤回車事件的實例講解,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-08-08
  • vue之bus總線的簡單使用解讀

    vue之bus總線的簡單使用解讀

    這篇文章主要介紹了vue之bus總線的簡單使用解讀,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-12-12
  • 關(guān)于vue-router路由的傳參方式params query

    關(guān)于vue-router路由的傳參方式params query

    這篇文章主要介紹了關(guān)于vue-router路由的傳參方式params query,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2023-10-10
  • vue動態(tài)循環(huán)出的多個select出現(xiàn)過的變?yōu)閐isabled(實例代碼)

    vue動態(tài)循環(huán)出的多個select出現(xiàn)過的變?yōu)閐isabled(實例代碼)

    本文通過實例代碼給大家分享了vue動態(tài)循環(huán)出的多個select出現(xiàn)過的變?yōu)閐isabled效果,非常不錯,具有一定的參考借鑒價值,需要的朋友參考下吧
    2019-11-11
  • 基于vue+axios+lrz.js微信端圖片壓縮上傳方法

    基于vue+axios+lrz.js微信端圖片壓縮上傳方法

    這篇文章主要介紹了基于vue+axios+lrz.js微信端圖片壓縮上傳方法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-06-06

最新評論

芦溪县| 宁阳县| 湄潭县| 西和县| 云南省| 镇康县| 洪湖市| 车险| 固安县| 皮山县| 莒南县| 彰化市| 邓州市| 育儿| 石门县| 喀什市| 共和县| 汝州市| 射洪县| 富蕴县| 谢通门县| 贵定县| 松阳县| 海兴县| 缙云县| 收藏| 贵阳市| 平利县| 曲靖市| 洞头县| 中江县| 通江县| 广丰县| 盘山县| 东港市| 玉溪市| 新晃| 姜堰市| 娱乐| 象州县| 溧阳市|