ホームページ  >  記事  >  ウェブフロントエンド  >  Vueでのファイルの一括ダウンロードとパッケージ化について詳しく解説

Vueでのファイルの一括ダウンロードとパッケージ化について詳しく解説

小云云
小云云オリジナル
2018-01-18 09:26:444976ブラウズ

この記事では主に、Vue でファイルを一括ダウンロードおよびパッケージ化するためのサンプル コードを紹介します。もっと学ぶことができるので、皆さんのお役に立てれば幸いです。

アイデア: 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())
 })
 })
}

ここで注意する必要があるのは、ダウンロードされたファイルがテキストタイプ (.txt、.js など) の場合です。 responseType: 'text' も使用できますが、ダウンロードしたファイルが写真やビデオなどの場合は、arraybuffer を使用する必要があります

最終コード 4.


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保存文件
  })
  })
 },
 },
}
注:

ダウンロードする場合 ファイルが大きすぎると、パッケージ化に時間がかかり、ブラウザがクラッシュする可能性もあります


関連する推奨事項:


ファイルをバッチダウンロード


Pythonはファイルの一括ダウンロードを実装します

パッケージングツールパーセルゼロvue開発スキャフォールディングを構成します

以上がVueでのファイルの一括ダウンロードとパッケージ化について詳しく解説の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。