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

Vue 中批量下載文件并打包的示例代碼

 更新時(shí)間:2017年11月20日 10:42:36   作者:M.M.F  
本篇文章主要介紹了Vue 中批量下載文件并打包的示例代碼,用 ajax 將文件下載, 然后用 jszip 壓縮文件, 最后用 file-saver 生成文件,有興趣的可以了解一下

思路: 用 ajax 將文件下載, 然后用 jszip 壓縮文件, 最后用 file-saver 生成文件

1. 準(zhǔn)備工作

安裝 3 個(gè)依賴: axios, jszip, file-saver

yarn add axios
yarn add jszip
yarn add file-saver

2. 下載文件

import axios from 'axios'
const getFile = url => {
 return new Promise((resolve, reject) => {
 axios({
  method:'get',
  url,
  responseType: 'arraybuffer'
 }).then(data => {
  resolve(data.data)
 }).catch(error => {
  reject(error.toString())
 })
 })
}

這里需要注意的是responseType, 如果下載文件是文本類型的(如: .txt, .js之類的), 那么用responseType: 'text'也可以, 但是如果下載的文件是圖片, 視頻之類的, 就得用arraybuffer

3. 打包文件

import JSZip from 'jszip'
import FileSaver from 'file-saver'
export default {
 methods: {
 handleBatchDownload() {
  const data = ['各類地址1', '各類地址2'] // 需要下載打包的路徑, 可以是本地相對(duì)路徑, 也可以是跨域的全路徑
  const zip = new JSZip()
  const cache = {}
  const promises = []
  data.forEach(item => {
  const promise = getFile(item).then(data => { // 下載文件, 并存成ArrayBuffer對(duì)象
   const arr_name = item.split("/")
   const file_name = arr_name[arr_name.length - 1] // 獲取文件名
   zip.file(file_name, data, { binary: true }) // 逐個(gè)添加文件
   cache[file_name] = data
  })
  promises.push(promise)
  })

  Promise.all(promises).then(() => {
  zip.generateAsync({type:"blob"}).then(content => { // 生成二進(jìn)制流
   FileSaver.saveAs(content, "打包下載.zip") // 利用file-saver保存文件
  })
  })
 },
 },
}

4. 最終代碼

import axios from 'axios'
import JSZip from 'jszip'
import FileSaver from 'file-saver'

const getFile = url => {
 return new Promise((resolve, reject) => {
 axios({
  method:'get',
  url,
  responseType: 'arraybuffer'
 }).then(data => {
  resolve(data.data)
 }).catch(error => {
  reject(error.toString())
 })
 })
}

export default {
 render(h) {
 return (<a on-click={ () => this.handleBatchDownload() } href="javascript:;" rel="external nofollow" >批量下載</a>)
 },
 methods: {
 handleBatchDownload() {
  const data = ['各類地址1', '各類地址2'] // 需要下載打包的路徑, 可以是本地相對(duì)路徑, 也可以是跨域的全路徑
  const zip = new JSZip()
  const cache = {}
  const promises = []
  data.forEach(item => {
  const promise = getFile(item).then(data => { // 下載文件, 并存成ArrayBuffer對(duì)象
   const arr_name = item.split("/")
   const file_name = arr_name[arr_name.length - 1] // 獲取文件名
   zip.file(file_name, data, { binary: true }) // 逐個(gè)添加文件
   cache[file_name] = data
  })
  promises.push(promise)
  })

  Promise.all(promises).then(() => {
  zip.generateAsync({type:"blob"}).then(content => { // 生成二進(jìn)制流
   FileSaver.saveAs(content, "打包下載.zip") // 利用file-saver保存文件
  })
  })
 },
 },
}

注意:

如果下載的文件過(guò)大, 打包的時(shí)間將會(huì)很長(zhǎng), 甚至可能會(huì)導(dǎo)致瀏覽器奔潰

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

相關(guān)文章

  • vant-List-@load事件一直觸發(fā)的解決

    vant-List-@load事件一直觸發(fā)的解決

    這篇文章主要介紹了vant-List-@load事件一直觸發(fā)的解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-01-01
  • 解決vue項(xiàng)目獲取dom元素寬高總是不準(zhǔn)確問(wèn)題

    解決vue項(xiàng)目獲取dom元素寬高總是不準(zhǔn)確問(wèn)題

    這篇文章主要介紹了解決vue項(xiàng)目獲取dom元素寬高總是不準(zhǔn)確問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2020-07-07
  • 解決removeEventListener 無(wú)法清除監(jiān)聽的問(wèn)題

    解決removeEventListener 無(wú)法清除監(jiān)聽的問(wèn)題

    這篇文章主要介紹了解決removeEventListener 無(wú)法清除監(jiān)聽的問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2020-10-10
  • Vue常用指令詳解分析

    Vue常用指令詳解分析

    這篇文章給大家詳細(xì)分析了關(guān)于VUE的常用的相關(guān)指令內(nèi)容,對(duì)此有需要的朋友們可以學(xué)習(xí)下。
    2018-08-08
  • Vue計(jì)算屬性computed與方法methods的區(qū)別及說(shuō)明

    Vue計(jì)算屬性computed與方法methods的區(qū)別及說(shuō)明

    這篇文章主要介紹了Vue計(jì)算屬性computed與方法methods的區(qū)別及說(shuō)明,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-08-08
  • 基于Vue.js實(shí)現(xiàn)一個(gè)完整的登錄功能

    基于Vue.js實(shí)現(xiàn)一個(gè)完整的登錄功能

    在現(xiàn)代Web應(yīng)用中,用戶登錄功能是一個(gè)核心模塊,它不僅涉及到用戶身份驗(yàn)證,還需要處理表單驗(yàn)證、狀態(tài)管理、接口調(diào)用等多個(gè)環(huán)節(jié),本文將基于一個(gè)Vue.js項(xiàng)目中的登錄功能實(shí)現(xiàn),深入解析其背后的技術(shù)細(xì)節(jié),幫助開發(fā)者更好地理解和實(shí)現(xiàn)類似功能,需要的朋友可以參考下
    2025-02-02
  • vue項(xiàng)目運(yùn)行npm?install報(bào)錯(cuò)問(wèn)題及解決

    vue項(xiàng)目運(yùn)行npm?install報(bào)錯(cuò)問(wèn)題及解決

    這篇文章主要介紹了vue項(xiàng)目運(yùn)行npm?install報(bào)錯(cuò)問(wèn)題及解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-08-08
  • vue實(shí)現(xiàn)導(dǎo)出word文檔功能實(shí)例(含多張圖片)

    vue實(shí)現(xiàn)導(dǎo)出word文檔功能實(shí)例(含多張圖片)

    項(xiàng)目需要導(dǎo)出word,于是乎又是查閱資料,然后自己寫,下面這篇文章主要給大家介紹了關(guān)于vue實(shí)現(xiàn)導(dǎo)出word文檔功能(含多張圖片)的相關(guān)資料,文中通過(guò)實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2022-09-09
  • Vue性能優(yōu)化的方法

    Vue性能優(yōu)化的方法

    這篇文章主要介紹了Vue性能優(yōu)化的方法,文中講解非常細(xì)致,幫助大家更好的理解和學(xué)習(xí)vue,感興趣的朋友可以了解下
    2020-07-07
  • vue實(shí)現(xiàn)登錄時(shí)的圖片驗(yàn)證碼

    vue實(shí)現(xiàn)登錄時(shí)的圖片驗(yàn)證碼

    這篇文章主要為大家詳細(xì)介紹了vue實(shí)現(xiàn)登錄時(shí)的圖片驗(yàn)證碼,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-04-04

最新評(píng)論

南靖县| 锦州市| 太和县| 康乐县| 英吉沙县| 神池县| 禄劝| 额济纳旗| 建宁县| 桐城市| 金坛市| 新源县| 神池县| 贞丰县| 怀宁县| 托克逊县| 浦县| 新巴尔虎右旗| 印江| 玛曲县| 汶上县| 台北市| 海口市| 稷山县| 光山县| 巴彦县| 九寨沟县| 三门县| 阿瓦提县| 利辛县| 平武县| 巨鹿县| 政和县| 从化市| 商洛市| 东辽县| 山东省| 高台县| 沙河市| 苏尼特左旗| 来凤县|