首頁 web前端 js教程 實例詳解Vue 中批次下載檔案並打包方法

實例詳解Vue 中批次下載檔案並打包方法

May 19, 2018 pm 02:03 PM
下載 大量 文件

本文主要介紹了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 = [&#39;各类地址1&#39;, &#39;各类地址2&#39;] // 需要下载打包的路径, 可以是本地相对路径, 也可以是跨域的全路径
  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保存文件
  })
  })
 },
 },
}
登入後複製

注意:

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

相關推薦:

Python實作批次下載檔案

php多檔案包裝下載的兩種方法實例

Python腳本檔案打包成執行檔的方法

以上是實例詳解Vue 中批次下載檔案並打包方法的詳細內容。更多資訊請關注PHP中文網其他相關文章!

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

熱門話題

Java教學
1662
14
CakePHP 教程
1419
52
Laravel 教程
1312
25
PHP教程
1262
29
C# 教程
1235
24
紅果短劇怎麼下載劇集 紅果短劇怎麼下載劇集 Mar 11, 2024 pm 09:16 PM

紅果短劇不僅是觀賞短劇的平台,更是內容豐富的寶庫,其中也包含了小說等精彩內容。對於許多熱愛閱讀的用戶來說,這無疑是一個巨大的驚喜。然而很多用戶們還不太了解究竟該如何在紅果短劇中下載並觀看這些小說內容,在下文中本站小編就將為大家帶來詳細的下載步驟介紹,希望能幫助到各位有需要的小夥伴們。紅果短劇怎麼下載觀看答案:【紅果短劇】-【聽書】-【文章】-【下載】。具體步驟:1、先打開紅果短劇軟體,進入到首頁中後我們點擊頁面上方的【聽書】按鈕;2、然後在小說的頁面中我們可以看到有很多的文章內容,在這

wallpaperengine登入別的號碼後下載別人的桌布怎麼辦 wallpaperengine登入別的號碼後下載別人的桌布怎麼辦 Mar 19, 2024 pm 02:00 PM

當你在自己電腦上登過別人steam帳號之後,剛好這個別人的帳號也有wallpaper軟體,切換回自己帳號之後steam就會自動下載別人帳號訂閱的桌布,使用者可以透過關閉steam雲端同步解決。 wallpaperengine登入別的號碼後下載別人的桌布怎麼辦1、登陸你自己的steam帳號,在設定裡面找到雲端同步,關閉steam雲端同步。 2.登陸你之前登陸的別人的steam帳號,打開wallpaper創意工坊,找到訂閱內容,然後取消全部訂閱。 (以後防止找不到壁紙,可以先收藏再取消訂閱)3、切換回自己的stea

115://開頭的連結怎麼下載?下載方法介紹 115://開頭的連結怎麼下載?下載方法介紹 Mar 14, 2024 am 11:58 AM

  最近有很多用戶都在問小編,115://開頭的連結怎麼下載?想要下載115://開頭的連結需要藉助115瀏覽器,大家下載好115瀏覽器後,再來看看下面小編整理好的下載教學。  115://開頭的鏈接下載方法介紹  1、登入115.com,下載115瀏覽器並安裝。  2、在1​​15瀏覽器網址列輸入:chrome://extensions/,進入擴充中心,搜尋Tampermonkey,安裝對應插件。  3、在115瀏覽器網址列輸入:  油猴腳本:https://greasyfork.org/en/

超級人類(superpeople)遊戲下載安裝方法介紹 超級人類(superpeople)遊戲下載安裝方法介紹 Mar 30, 2024 pm 04:01 PM

超級人類(superpeople)遊戲可以透過steam客戶端下載遊戲,這款遊戲的大小在28G左右,下載到安裝通常需要一個半小時​​,以下為大家帶來具體的下載安裝教學!新的申請全球封閉測試方法1)在Steam商店(steam客戶端下載)搜尋“SUPERPEOPLE”2)點擊“SUPERPEOPLE”商店頁面下方的“請求SUPERPEOPLE封閉測試訪問權限”3)點擊請求訪問權限按鈕後,將在Steam庫中可確認「SUPERPEOPLECBT」遊戲4)在「SUPERPEOPLECBT」中點選安裝按鈕並下

foob​​ar2000怎麼下載? -foobar2000怎麼使用 foob​​ar2000怎麼下載? -foobar2000怎麼使用 Mar 18, 2024 am 10:58 AM

foob​​ar2000是一款能隨時收聽音樂資源的軟體,各種音樂無損音質帶給你,增強版本的音樂播放器,讓你得到更全更舒適的音樂體驗,它的設計理念是將電腦端的高級音頻播放器移植到手機上,提供更便捷高效的音樂播放體驗,介面設計簡潔明了易於使用它採用了極簡的設計風格,沒有過多的裝飾和繁瑣的操作能夠快速上手,同時還支持多種皮膚和主題,根據自己的喜好進行個性化設置,打造專屬的音樂播放器支援多種音訊格式的播放,它還支援音訊增益功能根據自己的聽力情況調整音量大小,避免過大的音量對聽力造成損害。接下來就讓小編為大

夸克網盤怎麼下載到本地?夸克網盤下載檔案保存回本地的方法 夸克網盤怎麼下載到本地?夸克網盤下載檔案保存回本地的方法 Mar 13, 2024 pm 08:31 PM

  不少的用戶們在使用夸克網盤的時候需要將文件下載下來,可我們想讓他保存在本地,那麼這要怎麼設定?以下就讓本站來為使用者來仔細的介紹一下夸克網盤下載檔案保存回本地的方法吧。  夸克網盤下載檔案儲存回本地的方法  1、開啟夸克,登入帳號進去,點選清單圖示。  2、點選圖示之後,選擇網盤。  3、進去夸克網盤之後,點選我的檔案。  4、進去我的文件之後,選擇要下載的文件,點擊三點圖示。  5、勾選要下載的文件,點選下載就行了。

出現0x80004005錯誤代碼怎麼辦 小編教你0x80004005錯誤代碼解決方法 出現0x80004005錯誤代碼怎麼辦 小編教你0x80004005錯誤代碼解決方法 Mar 21, 2024 pm 09:17 PM

在電腦中刪除或解壓縮資料夾,時有時會彈出提示對話框“錯誤0x80004005:未指定錯誤”,如果遇到這中情況應該怎麼解決呢?提示錯誤碼0x80004005的原因其實很多,但大部分因為病毒導致,我們可以重新註冊dll來解決問題,下面,小編給大夥講解0x80004005錯誤代碼處理經驗。有使用者在使用電腦時出現錯誤代碼0X80004005的提示,0x80004005錯誤主要是由於電腦沒有正確註冊某些動態連結庫文件,或電腦與Internet之間存在不允許的HTTPS連接防火牆所引起。那麼如何

貝樂虎兒歌怎麼下載 貝樂虎兒歌怎麼下載 Mar 28, 2024 am 11:10 AM

貝樂虎兒歌作為孩子們成長過程中不可或缺的陪伴,以其歡快的旋律、生動的畫面和寓教於樂的內容,贏得了無數家長和孩子們的喜愛。為了讓寶貝們能夠隨時隨地享受到兒歌帶來的快樂,許多家長都希望能夠將貝樂虎兒歌下載到手機或平板上方便隨時拿來給孩子聽,但是究竟該如何將貝樂虎的兒歌保存到自己的手機呢,這篇教學就會為大家帶來詳細的內容介紹,還不了解的用戶們就快來跟著本文一起閱讀了解一下吧。貝樂虎兒歌下載兒歌多圖教學:開啟軟體,選擇一首想要下載的兒歌,小編這裡以「經典兒歌」為例2.在兒歌明星的下方點選「下載」按鈕,

See all articles