基于Jquery EasyUI JSZip FileSaver的简单使用

这篇具有很好参考价值的文章主要介绍了基于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、效果展示

基于Jquery EasyUI JSZip FileSaver的简单使用,jquery,easyui,前端,JSZip,FileSaver

 基于Jquery EasyUI JSZip FileSaver的简单使用,jquery,easyui,前端,JSZip,FileSaver

基于Jquery EasyUI JSZip FileSaver的简单使用,jquery,easyui,前端,JSZip,FileSaver文章来源地址https://www.toymoban.com/news/detail-610110.html

到了这里,关于基于Jquery EasyUI JSZip FileSaver的简单使用的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【开源三方库】Easyui:基于OpenAtom OpenHarmony ArkUI深度定制的组件框架

    万冬阳 公司:中国科学院软件所 小组:知识体系工作组 Easyui是一套基于ArkTS语言开发的轻量、可靠的移动端组件库,它是对OpenAtom OpenHarmony(以下简称“OpenHarmony”) ArkUI进行深度定制的组件框架。Easyui可扩展性较强,可以基于源码进行二次开发,修改原有组件以及新增部

    2024年02月03日
    浏览(44)
  • 使用easyui的tree组件实现给角色快捷分配权限功能

    这篇文章主要介绍怎么实现角色权限的快捷分配功能,不需要像大多数项目的授权一样,使用类似穿梭框的组件来授权。 具体实现:通过菜单树的勾选和取消勾选来给角色分配权限,在这之前,需要得到角色的菜单树,角色已有的权限对应树节点的选中状态为true,否则为f

    2024年02月14日
    浏览(35)
  • 简单引入JQuery

    作为一个兢兢业业的后端程序猿,这里为了方便自己搭建的项目更加合理,使自己写的接口对前端也更加友好。所以我决定,从头开始学习下前端知识。 先去JQuery把JQuery.js文件内容的信息,弄下来。 jquery官网下载地址 点开以后就是JQuery的所有信息 ctrl + a 选中全部再 ctrl +

    2024年02月08日
    浏览(39)
  • jQuery UI简单的讲解

    我们先进入一下问答时间,你都知道多少呢? (1)什么是jQuery UI 呢?   解答:jQuery UI 是以 jQuery 为基础的开源 JavaScript 网页用户界面代码库。包含底层用户交互、动画、特效和可更换主题的可视控件。我们可以直接用它来构建具有很好交互性的web应用程序。所有插件测试

    2024年04月10日
    浏览(48)
  • jQuery实现简单弹出框

    1、点击“更多”出现弹出框 2、点击下拉列表触发回调 3、点击空白区域收起弹出框 PS:鼠标右键效果图`另存为`到本地 ,再将图片后缀gif改为rar即可得到完整代码压缩包。 1、提前声明弹出标识做判断; 2、通过jQuery的has()、is()或其他类似方法判断点击的是弹出层以外的空白

    2024年02月11日
    浏览(44)
  • easyui渲染隐藏域<input type=“hidden“ />为textbox可作为分割条使用

    最近在修改前端代码的时候,偶然发现使用javascript代码渲染的方式将input type=\\\"hidden\\\" /渲染为textbox时,会显示一个神奇的效果,这个textbox输入框并不会隐藏,而是显示未一个细条,博主发现非常适合用来当分割条使用。 不小心把id渲染成了textbox,涉及的js代码如下: 于是页面

    2024年01月21日
    浏览(35)
  • 基于javaweb+mysql的jsp+servlet幼儿园管理系统(java+jsp+easyui+h-ui+servlet+mysql)

    基于javaweb+mysql的jsp+servlet幼儿园管理系统(java+jsp+easyui+h-ui+servlet+mysql) 私信 源码获取及调试交流 运行环境 Java≥8、MySQL≥5.7、Tomcat≥8 开发工具 eclipse/idea/myeclipse/sts等均可配置运行 适用 课程设计,大作业,毕业设计,项目练习,学习演示等 功能说明 基于javaweb的JSP+Servlet幼儿

    2024年01月16日
    浏览(75)
  • easyui tabs切换

    easyui tabs切换之前提醒保存修改的信息 当存在多个tabs,相互切换时提醒保存修改的信息: 这里用的鼠标mousedown事件 例子:一个tab标签页面内有定时器,需要不在当前页时暂定并保存,回到当前页面时,继续 关闭标签或页面,需要保存的情况: 关闭tab相关的情况: 右键关闭所

    2024年02月16日
    浏览(50)
  • EasyUI Datagrid 应用

    列(Column)属性 数据网格(DataGrid) 的列(Column)是一个数组对象,它的每个元素也是一个数组。元素数组的元素是一个配置对象,它定义了每个列的字段。 名称 类型 描述 title string 列的标题文本。 field string 列的字段名。 width number 列的宽度。如果未定义,则宽度会自动扩

    2024年02月16日
    浏览(42)
  • easyui实用点

    1.下拉框(input框只能选不能手动输入编辑) 2.日期框,下拉框,文本框等class 3.第一个输入框填写之后第二个设置成必填 1.输入联系人之后 联系电话变成必填 注意:onChange的方法要写到data-options=“onChange:onContactsChange” 2.onContactsChange()方法 3.第一个输入之后 第二个禁用

    2024年02月14日
    浏览(42)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包