ホームページ > 記事 > ウェブフロントエンド > Vueでのファイルの一括ダウンロードとパッケージ化について詳しく解説
この記事では主に、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保存文件 }) }) }, }, }注:ダウンロードする場合 ファイルが大きすぎると、パッケージ化に時間がかかり、ブラウザがクラッシュする可能性もあります
ファイルをバッチダウンロード
以上がVueでのファイルの一括ダウンロードとパッケージ化について詳しく解説の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。