使用JSZip与FileSaver批量下载文件
接转换数据
代码:github地址
1、FileSaver.js :文件下载
使用:先引入js
var selectedFile = document.getElementById("files").files[i];//获取读取的File对象var name = selectedFile.name;//读取选中文件的文件名var size = selectedFile.size;//读取选中文件的大小console.log("文件名:" + name + "大小:" + size);var reader = new FileReader();//这里是核心!!!读取操作就是由它完成的。reader.readAsText(selectedFile);//读取文件的内容reader.onload = function () {jsonData = $.csv.toObjects(this.result);//当读取完成之后会回调这个函数,然后此时文件的内容存储到了result中。直接操作即可。};
for(let i=0;i<result.length;i++){var content = JSON.stringify(result[i]);var blob = new Blob([content], {type: "text/plain;charset=utf-8"});saveAs(blob, "salt-" + i + ".json");}
缺点:我需要下载很多json文件,但当我选择多个文件时,最终只下载十几个,不符合我的预期(测试:十五个以内能下载完全)。经过排查,不是异步问题(利用promise.all排查的)。
解决方法:引入jszip,把多个要下载json合适文件放在压缩包内,一起下载
2、JSZip :是一个用于创建、读取和编辑.zip文件的JavaScript库
使用,先引入jszip
const zip = new JSZip();reader.onload = function () {jsonData = $.csv.toObjects(this.result);var blob = new Blob([JSON.stringify(jsonData)], {type: "text/plain;charset=utf-8"});const file_name=i+1+'.json';zip.file(file_name,blob);//传数据到文件中};
zip.generateAsync({ type: 'blob' }).then(content => {console.log(content)// 生成二进制流saveAs(content, '文件下载.zip') // 利用file-saver保存文件 自定义文件名})
难点:不知道怎么传json对象
zip.file(name,data),百度的时候搜到可以将字符串和图片放到文件夹中进行压缩,要不就越是ArrayBuffer,后面到官网看,发现data还可以是Blob对象,正好FileSaver中下载的就是Blob对象。
官网地址
3、Blob对象、 ArrayBuffer对象:常见于文件上传操作处理(如处理图片上传预览等问题)
( 序列化:内存中的数据对象只有转换为流才可以进行数据持久化和网络传输。发送到服务器的对象,其实输送的是字节流(五层模型),blob对象可以理解为将对象转换为这个流)
JSON.stringify()用来将value(string、object、array、number、boole、null等)序列化为json字符串
使用JSZip与FileSaver批量下载文件相关推荐
- java批量下载文件为zip包
批量下载文件为zip包的工具类 package com.meeno.trainsys.util;import javax.servlet.http.HttpServletRequest; import ...
- python批量下载文件-Python实现批量下载文件
Python实现批量下载文件 #!/usr/bin/env python # -*- coding:utf-8 -*- from gevent import monkey monkey.patch_a ...
- python批量下载网页文件-Python实现批量下载文件
Python实现批量下载文件 #!/usr/bin/env python # -*- coding:utf-8 -*- from gevent import monkey monkey.patch_a ...
- mysql 线程池 下载_java线程池实现批量下载文件
本文实例为大家分享了java线程池实现批量下载文件的具体代码,供大家参考,具体内容如下 1 创建线程池 package com.cheng.webb.thread; import java.util. ...
- php批量下载TXT中的URL,需求是这样,再不改变目录结构的前提下,通过URL,批量下载文件,我已经写好了一点儿了...
//需求是这样,再不改变目录结构的前提下,通过URL,批量下载文件,我已经写好了一点儿了 //但是有点bug,只能下载最后一个文件 //邱老师解决一下 $file=fopen("q.txt& ...
- 如何用python批量下载数据_Python实现批量下载文件
Python实现批量下载文件 #!/usr/bin/env python # -*- coding:utf-8 -*- from gevent import monkey monkey.patch_a ...
- python 下载文件-Python实现批量下载文件
Python实现批量下载文件 #!/usr/bin/env python # -*- coding:utf-8 -*- from gevent import monkey monkey.patch_a ...
- 批量下载文件,打包成zip压缩包
批量下载文件,用程序打成zip压缩包在下载 前台传来要下载的url数组 @RequestMapping(value = "/download",method = RequestMe ...
- 大数据批量下载文件 代码
大数据批量下载文件 代码 # # 大数据批量下载文件 from multiprocessing import Process import os import pandas as pd import ...
最新文章
- Log4net之配置文件
- LeetCode之Sort List
- 发现一个好工具RenderDoc
- 稳定多维table排序
- 【Android】Android中WIFI开发总结(一)
- 去掉Phoca Download的Powered By
- gdb pwndbg插件安装
- latex图片_Latex使用图片、文献、模板——自定义与路径指定
- 3月11日Linux课程笔记
- 谁有能锁屏不崩溃的录屏软件给推荐个。。。。
- idea无法找到主启动类_IDEA打包jar-解决找不到或无法加载主类 main的问题
- 编码通信与魔术初步(六)——经典魔术《傅氏幻术》赏析和《我的心灵感应》...
- Ubantu查看json文件
- 新浪微博批量登录获取cookie
- Cisco2960交换机密码破解方法
- 报错:启动apache服务时出现报错
- 921天,从小厂到入职阿里
- Latex 打勾 打叉
- 线性回归——回归预测
- 索尼前CEO平井一夫宣布6月退休 卸任董事长并退出董事会