接转换数据

代码: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批量下载文件相关推荐

  1. java批量下载文件为zip包

    批量下载文件为zip包的工具类 package com.meeno.trainsys.util;import javax.servlet.http.HttpServletRequest; import ...

  2. python批量下载文件-Python实现批量下载文件

    Python实现批量下载文件 #!/usr/bin/env python # -*- coding:utf-8 -*- from gevent import monkey monkey.patch_a ...

  3. python批量下载网页文件-Python实现批量下载文件

    Python实现批量下载文件 #!/usr/bin/env python # -*- coding:utf-8 -*- from gevent import monkey monkey.patch_a ...

  4. mysql 线程池 下载_java线程池实现批量下载文件

    本文实例为大家分享了java线程池实现批量下载文件的具体代码,供大家参考,具体内容如下 1 创建线程池 package com.cheng.webb.thread; import java.util. ...

  5. php批量下载TXT中的URL,需求是这样,再不改变目录结构的前提下,通过URL,批量下载文件,我已经写好了一点儿了...

    //需求是这样,再不改变目录结构的前提下,通过URL,批量下载文件,我已经写好了一点儿了 //但是有点bug,只能下载最后一个文件 //邱老师解决一下 $file=fopen("q.txt& ...

  6. 如何用python批量下载数据_Python实现批量下载文件

    Python实现批量下载文件 #!/usr/bin/env python # -*- coding:utf-8 -*- from gevent import monkey monkey.patch_a ...

  7. python 下载文件-Python实现批量下载文件

    Python实现批量下载文件 #!/usr/bin/env python # -*- coding:utf-8 -*- from gevent import monkey monkey.patch_a ...

  8. 批量下载文件,打包成zip压缩包

    批量下载文件,用程序打成zip压缩包在下载 前台传来要下载的url数组 @RequestMapping(value = "/download",method = RequestMe ...

  9. 大数据批量下载文件 代码

    大数据批量下载文件 代码 # # 大数据批量下载文件 from multiprocessing import Process import os import pandas as pd import ...

最新文章

  1. Log4net之配置文件
  2. LeetCode之Sort List
  3. 发现一个好工具RenderDoc
  4. 稳定多维table排序
  5. 【Android】Android中WIFI开发总结(一)
  6. 去掉Phoca Download的Powered By
  7. gdb pwndbg插件安装
  8. latex图片_Latex使用图片、文献、模板——自定义与路径指定
  9. 3月11日Linux课程笔记
  10. 谁有能锁屏不崩溃的录屏软件给推荐个。。。。
  11. idea无法找到主启动类_IDEA打包jar-解决找不到或无法加载主类 main的问题
  12. 编码通信与魔术初步(六)——经典魔术《傅氏幻术》赏析和《我的心灵感应》...
  13. Ubantu查看json文件
  14. 新浪微博批量登录获取cookie
  15. Cisco2960交换机密码破解方法
  16. 报错:启动apache服务时出现报错
  17. 921天,从小厂到入职阿里
  18. Latex 打勾 打叉
  19. 线性回归——回归预测
  20. 索尼前CEO平井一夫宣布6月退休 卸任董事长并退出董事会

热门文章

  1. Linux端口被占用解决
  2. 简单深入理解高性能网络编程(Netty)中的Reactor模型(图文+代码)
  3. Android模拟器或者真机无法连接内网的解决方案(当需要修改hosts的时候)
  4. 孙强:IT治理需六方结合
  5. Java实现梭哈扑克牌游戏
  6. 独立站运营必做的6项工作内容
  7. 最优控制和轨迹规划学习笔记 包含多个实际案例 主要思路是使用优化算法来找到车辆的最佳路径
  8. https中文乱码问题
  9. 8088微处理器主要引线
  10. ObjectARX_多重引线MLeader