Vue中批量下载文件并打包详解

本文主要介绍了vue 中批量下载文件打包的示例代码,用 ajax 将文件下载, 然后用 jszip 压缩文件, 最后用 file-saver 生成文件,有兴趣的可以了解一下,希望能帮助到大家。

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

1. 准备工作

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

yarn add axiosyarn add jszipyarn 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 ( 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(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实现批量下载文件

打包工具parcel零配置vue开发脚手架

以上就是Vue中批量下载文件并打包详解的详细内容,更多请关注【创想鸟】其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至253000106@qq.com举报,一经查实,本站将立刻删除。

发布者:PHP中文网,转转请注明出处:https://www.chuangxiangniao.com/p/2790979.html

(0)
上一篇 2025年3月8日 19:04:23
下一篇 2025年3月8日 19:04:32

AD推荐 黄金广告位招租... 更多推荐

相关推荐

  • vuex2.0 之modules实例详解

    本文主要介绍了vuex2.0 之 modules,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧,希望能帮助到大家。 什么是module? 背景:在Vue中State使用是单一状态树结构,应该的所有的状态都放在s…

    2025年3月8日
    200
  • three.js创建场景实例详解

    本文主要给大家介绍了three.js中文文档学习之创建场景的相关资料,文中通过示例代码介绍的非常详细,对大家学习或者使用three.js具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧。 什么是Three.js? 如果你正在…

    编程技术 2025年3月8日
    200
  • ES6中class关键字详解

    class是es6引入的最重要特性之一。在没有class之前,我们只能通过原型链来模拟类。本文主要介绍了es6中class关键字,class是es6引入的最重要特性之一。本文通过实例代码给大家详解,需要的朋友可以参考下,希望能帮助到大家。 …

    编程技术 2025年3月8日
    200
  • gulp安装以及打包合并详解

    本文主要给大家介绍了关于gulp实现人一个打包合并的方法教程,并分享了gulp打包js/css时合并成一个文件时的顺序的解决方法,文中通过示例代码介绍的非常详细,需要的朋友可以参考借鉴,下面随着小编来一起学习学习吧。希望能帮助到大家。 前言…

    2025年3月8日
    200
  • React中setState源码详解

    本文主要介绍了深入研究react中setstate源码,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧,希望能帮助到大家。 React作为一门前端框架,虽然只是focus在MVVM中的View部分,但还是实现了V…

    编程技术 2025年3月8日
    200
  • Bootstrap表单验证功能详解

    本文主要为大家详细介绍了基于bootstrap表单验证功能,具有一定的参考价值,感兴趣的小伙伴们可以参考一下,希望能帮助到大家。 基于Bootstrap表单验证,供大家参考,具体内容如下 GitHub地址:https://github.co…

    2025年3月8日
    200
  • Js判断H5上下滑动方向详解

    本文主要为大家分享一篇js判断h5上下滑动方向及滑动到顶部和底部判断的示例代码,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧,希望能帮助到大家。 向上滑动隐藏底部悬浮框,向下滑动显示悬浮框。使用pc端浏览器查看请把浏览器设…

    编程技术 2025年3月8日
    200
  • JavaScript插件Tab选项卡详解

    本文主要为大家详细介绍了javascript插件tab选项卡效果,具有一定的参考价值,感兴趣的小伙伴们可以参考一下,希望能帮助到大家。 闲来无事,研究了一下JavaScript插件的写法,今天就将自己写的一个小插件记录下来。 本文介绍了此款…

    2025年3月8日
    200
  • Vue 实现一个酷炫的menu插件详解

    本文主要给大家介绍基于 vue 实现一个酷炫的 menu插件,此篇教程需要大家具备一定的css和vue基础知识,本文分步骤给大家介绍的非常详细,需要的朋友参考下吧,希望能帮助到大家。 写在前面 最近看到一个非常酷炫的menu插件,一直想把它…

    2025年3月8日 编程技术
    200
  • vue组件父与子通信详解

    本文主要为大家详细介绍了vue组件父与子通信详解,实现登录窗口,具有一定的参考价值,感兴趣的小伙伴们可以参考一下,希望能帮助到大家。 一、组件间通信(父组件    –>  子组件) 步骤: ①父组件在调用子组件 传值   …

    编程技术 2025年3月8日
    200

发表回复

登录后才能评论