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

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

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

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

1. 準備工作

安裝 3 個依賴: 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'] // 需要下載打包的路徑, 可以是本地相對路徑, 也可以是跨域的全路徑
  const zip = new JSZip()
  const cache = {}
  const promises = []
  data.forEach(item => {
  const promise = getFile(item).then(data => { // 下載文件, 并存成ArrayBuffer對象
   const arr_name = item.split("/")
   const file_name = arr_name[arr_name.length - 1] // 獲取文件名
   zip.file(file_name, data, { binary: true }) // 逐個添加文件
   cache[file_name] = data
  })
  promises.push(promise)
  })

  Promise.all(promises).then(() => {
  zip.generateAsync({type:"blob"}).then(content => { // 生成二進制流
   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'] // 需要下載打包的路徑, 可以是本地相對路徑, 也可以是跨域的全路徑
  const zip = new JSZip()
  const cache = {}
  const promises = []
  data.forEach(item => {
  const promise = getFile(item).then(data => { // 下載文件, 并存成ArrayBuffer對象
   const arr_name = item.split("/")
   const file_name = arr_name[arr_name.length - 1] // 獲取文件名
   zip.file(file_name, data, { binary: true }) // 逐個添加文件
   cache[file_name] = data
  })
  promises.push(promise)
  })

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

注意:

如果下載的文件過大, 打包的時間將會很長, 甚至可能會導致瀏覽器奔潰

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。

相關文章

  • Vue裝飾器中的vue-property-decorator?和?vux-class使用詳解

    Vue裝飾器中的vue-property-decorator?和?vux-class使用詳解

    這篇文章主要介紹了Vue裝飾器中的vue-property-decorator?和?vux-class使用詳解,通過示例代碼給大家介紹的非常詳細,對vue-property-decorator?和?vux-class的使用感興趣的朋友一起看看吧
    2022-08-08
  • 關于VueRouter導入的全過程

    關于VueRouter導入的全過程

    這篇文章主要介紹了關于VueRouter導入的全過程,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-08-08
  • vue-cropper組件實現(xiàn)圖片切割上傳

    vue-cropper組件實現(xiàn)圖片切割上傳

    這篇文章主要為大家詳細介紹了vue-cropper組件實現(xiàn)圖片切割上傳,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-05-05
  • Vuei18n 在數組中的使用方式

    Vuei18n 在數組中的使用方式

    這篇文章主要介紹了Vuei18n 在數組中的使用方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-08-08
  • vue實現(xiàn)文章內容過長點擊閱讀全文功能的實例

    vue實現(xiàn)文章內容過長點擊閱讀全文功能的實例

    下面小編就為大家分享一篇vue實現(xiàn)文章內容過長點擊閱讀全文功能的實例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2017-12-12
  • typescript+vite項目配置別名的方法實現(xiàn)

    typescript+vite項目配置別名的方法實現(xiàn)

    我們?yōu)榱耸÷匀唛L的路徑,經常喜歡配置路徑別名,本文主要介紹了typescript+vite項目配置別名的方法實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2022-07-07
  • 如何使用electron將vue項目打包成.exe文件(保姆級教程)

    如何使用electron將vue項目打包成.exe文件(保姆級教程)

    本文給大家介紹如何使用electron將vue項目打包成.exe文件,大家要注意一下vue2項目,使用的vue-element-admin框架,用electron打包成.exe文件,本文結合實例代碼給大家介紹的非常詳細,需要的朋友參考下吧
    2024-03-03
  • vue中的attribute和property的具體使用及區(qū)別

    vue中的attribute和property的具體使用及區(qū)別

    本文主要介紹了vue中的attribute和property的具體使用及區(qū)別,文中通過示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-09-09
  • vue項目打包后請求地址錯誤/打包后跨域操作

    vue項目打包后請求地址錯誤/打包后跨域操作

    這篇文章主要介紹了vue項目打包后請求地址錯誤/打包后跨域操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-11-11
  • vue3中Teleport和Suspense的具體使用

    vue3中Teleport和Suspense的具體使用

    本文主要介紹了vue3中Teleport和Suspense的具體使用,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2023-07-07

最新評論