Vue 中批量下载文件并打包的示例代码_vue.js_脚本之家

安装 3 个依赖: axios, jszip, file-saver

3. 打包文件

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

如果下载的文件过大, 打包的时间将会很长, 甚至可能会导致浏览器奔溃

这里需要注意的是responseType, 如果下载文件是文本类型的,
那么用responseType: ‘text’也可以, 但是如果下载的文件是图片, 视频之类的,
就得用arraybuffer

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

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.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.all => { zip.generateAsync.then(content => { // 生成二进制流 FileSaver.saveAs // 利用file-saver保存文件 }) }) }, },}

4. 最终代码

import axios from 'axios'import JSZip from 'jszip'import FileSaver from 'file-saver'const getFile = url => { return new Promise => { axios({ method:'get', url, responseType: 'arraybuffer' }).then(data => { resolve.catch(error => { reject })}export default { render { return  => this.handleBatchDownload() } href="javascript:;" rel="external nofollow" >批量下载) }, methods: { handleBatchDownload() { const data = ['各类地址1', '各类地址2'] // 需要下载打包的路径, 可以是本地相对路径, 也可以是跨域的全路径 const zip = new JSZip() const cache = {} const promises = [] data.forEach(item => { const promise = getFile.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.all => { zip.generateAsync.then(content => { // 生成二进制流 FileSaver.saveAs // 利用file-saver保存文件 }) }) }, },}

2. 下载文件

yarn add axiosyarn add jszipyarn add file-saver

1. 准备工作

思路: 用 ajax 将文件下载, 然后用 jszip 压缩文件, 最后用 file-saver
生成文件

相关文章

发表评论

电子邮件地址不会被公开。 必填项已用*标注

网站地图xml地图