当前位置: 首页 > news >正文

基于Jquery EasyUI JSZip FileSaver的简单使用

一、前言

在前端的项目开发中 ,下载文件压缩包是很重要的一个环节,那么怎么下载多个文件并压缩成ZIP下载呢?

二、使用步骤

1、引用库

<script type="text/javascript" src="~/Scripts/comm/jszip.min.js" ></script><script type="text/javascript" src="~/Scripts/comm/FileSaver.min.js" ></script>

库下载地址:https://download.csdn.net/download/u012949335/88088658 

2、简单使用方法

var zip = new JSZip();
var zipName = "test";
var fileFolder = zip.folder(zipName);
fileFolder.file(fileList[k].name, fileList[k].content, {binary: true //二进制});
zip.generateAsync({type: 'blob'}).then(function(content){saveAs(content, zipName+'.zip');});

 3、封装高级用法

/**
*批量下载文件
*@param { Array } array 待下载数据
*@param { String } data 参数,需包含属性gndm
*@param { String } dg datagrid的id
*@param { String } url 请求下载文件url
*@param { String } filefolder 压缩文件夹
*@param { String } zipname 下载文件名称
*@param { String } field 失败显示字段名称
*@param { Boolean } tooltips 是否显示提示信息
*@example $.ajaxRecursionZipDownFile({ array: infolist, data: { "gndm": gndm }, datagrid: "XX", url: 'XXXX', filefolder: "XX附件", zipname: "XX附件.zip", field: "xh" });
*/
jQuery.ajaxRecursionZipDownFile = function (option) {if (typeof option === 'undefined') throw new Error("Please pass parameters");if (typeof option.url === 'undefined') throw new Error("Please pass parameters url");if (typeof option.array === 'undefined') throw new Error("Please pass parameters array");if (typeof option.field === 'undefined' || option.field === null) option.field = "xh";option.data = option.data || {};if (option.data.hasOwnProperty('gndm') === false) throw new Error("Please pass parameters data->gndm");option.zipname = option.zipname || "附件";option.filefolder = option.filefolder || "附件";option.tooltips = option.tooltips || false;var zip = new JSZip();var fileFolder = zip.folder(option.filefolder);var fileName = '';var _currentIndex = 0;var _successIndex = 0;var _faileXhInfo = '';var _currentTotal = option.array.length;pageLoadDown();function _recursionZipDownFiles() {if (_currentIndex >= _currentTotal) {zip.generateAsync({ type: 'blob' }).then(function (content) {saveAs(content, option.zipname);dispageload();var msg = "压缩成功:" + _successIndex.toString() + "个。失败数据:" + (_faileXhInfo || "无。");if (option.datagrid) $('#' + option.datagrid).datagrid('clearChecked');if (option.tooltips === true) {$.messager.alert('提示', msg, 'infoxx');if (!this._endmessagertimeout) {window.clearTimeout(this._endmessagertimeout);}this._endmessagertimeout = setTimeout("$(\".messager-body\").window('close');", 1000);}});return false;}var jsonObject = JSON.stringify(option.array[_currentIndex]);var _objdata = option.data;_objdata.json = jsonObject;axios({method: 'post',url: option.url,data: _objdata,responseType: 'blob'}).then(function (res) {var data = res.data;var reqHeader = res.headers;if (reqHeader["content-disposition"]) fileName = decodeURI(reqHeader["content-disposition"]).split('; ')[1].split('filename=')[1];if (data.size > 0) {fileFolder.file(fileName, data, { binary: true });_successIndex++;} else {_faileXhInfo += option.array[_currentIndex][option.field] + ";";}_currentIndex++;_changeProcess(Math.round((_currentIndex / _currentTotal) * 100));_recursionZipDownFiles(option.array, option.data.gndm);}, function (err) {_currentIndex++;_faileXhInfo += option.array[_currentIndex][option.field] + ";";_changeProcess(Math.round((_currentIndex / _currentTotal) * 100));});}_recursionZipDownFiles();
}

4、调用示例

 function getFilesZipDownInfo(gndm) {var rows = $("#dg").datagrid('getChecked');if (rows.length == 0) {$.messager.alert('提示', "请选择要下载的数据!", "error");return;}var infolist = [];$.each(rows, function (index, row) {var info = new Object();info.idxx = row.idxx;info.fjmcxx = row.fjmcxx;infolist.push(info);});$.ajaxRecursionZipDownFile({array: infolist,data: { "gndm": gndm },datagrid: "dg",url: 'downfile',filefolder: "实验报告附件",zipname: "实验报告附件.zip",field: "idxx",tooltips: true});}

5、效果展示

 

http://www.lryc.cn/news/98918.html

相关文章:

  • git远程一个分支对应本地两个分支推送
  • SpringCloud学习—Hystrix:服务熔断
  • 8款常用系统镜像烧录软件
  • 设计模式什么情况下适合使用呢?
  • Docker和K8s区别,使用场景,具体怎么使用以及详细命令
  • K8S集群创建和管理,以及常用命令
  • HarmonyOS/OpenHarmony元服务开发-卡片使用动效能力
  • 【FusionInsight HD】FusionInsight HD 651创建集群-Yarn
  • MQ, RocketMQ, 安装
  • Python将COCO格式实例分割数据集转换为YOLO格式实例分割数据集
  • 借助 Mybatis 的动态 SQL 解决传参不确定问题
  • 前端框架学习-Vue(一)
  • Elasticsearch Query DSL
  • 腾讯云 CODING × K+ 峰会再次携手开启软件行业新风向
  • 2023年发布的25个开源大型语言模型总结
  • Istio网关Gateway 启用TLS
  • slam建图与定位_cartographer代码阅读(7)后端约束构建
  • Android usb 配件模式通信示例
  • 【Hive实战】Hive的压缩池与锁
  • 【VUE】使用elementUI tree组件根据所选id自动回显
  • RocketMQ, Dashboard, 控制台安装
  • chrome解决http自动跳转https问题
  • FastGithub 下载
  • TSINGSEE青犀视频安防监控管理平台EasyNVR如何配置鉴权?
  • unittest 数据驱动DDT应用
  • 素数个数——数论
  • express编写一个简单的get接口
  • 【力扣刷题C++】环形链表
  • 如何用Python统计CSDN质量分
  • gin框架内容(三)--中间件