博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
ajax+ashx:实现文件的批量导出
阅读量:5911 次
发布时间:2019-06-19

本文共 1871 字,大约阅读时间需要 6 分钟。

背景:

  最近公司有一个需求,就是实现excle的批量导出(一次性导出多个excle)。

实现方式:

  想到的实现方式:

  1、发起一个导出请求,然后批量生产需要导出的excle文件,最后将文件生成一个压缩包,最后将生成的压缩包输出到前端页面。

     该方式的优缺点:

      优点:对应用户来说,只需要接受一个压缩包即可

      缺点:后端在处理逻辑上变得复杂

            需要考虑多线程处理

            需要引入生成压缩包逻辑

            需要生成零时文件

          如果用户没有按照解压工具,文件不能正常打开

  2、需要导出多个excle时,前端发出多个导出文件请求

     该方法的优缺点:

      优点:功能逻辑变得根据加单,单一

      缺点:用户会接受到多个文件

 

  综合开发进度及其各方面,最后我们采用了方案2

  下面我整理一下方案2的实现DEMO,不过很多也是在网上找的原型

前端代码:

  

    

  

后端代码:

  此处后端代码先直接下载一个本地的excl文件,后续会单独写一遍关于如何生成excle的帖子

///     /// Handler1 的摘要说明    ///     public class Handler1 : IHttpHandler {        public void ProcessRequest(HttpContext context) {                     string s_fileName = "222.xlsx";            HttpContext.Current.Response.ContentType = "application/ms-download";            string s_path = HttpContext.Current.Server.MapPath(s_fileName);            System.IO.FileInfo file = new System.IO.FileInfo(s_path);            HttpContext.Current.Response.Clear();            HttpContext.Current.Response.AddHeader("Content-Type", "application/octet-stream");            HttpContext.Current.Response.Charset = "utf-8";            HttpContext.Current.Response.AddHeader("Content-Disposition", "attachment;filename="          + System.Web.HttpUtility.UrlEncode("222.xlsx", System.Text.Encoding.UTF8));            HttpContext.Current.Response.AddHeader("Content-Length", file.Length.ToString());            HttpContext.Current.Response.WriteFile(file.FullName);            HttpContext.Current.Response.Flush();            HttpContext.Current.Response.Clear();            HttpContext.Current.Response.End();        }        public bool IsReusable {            get {                return false;            }        }    }

  

转载于:https://www.cnblogs.com/xiaoXuZhi/p/ajax_ashx_downLoadFile.html

你可能感兴趣的文章
我的友情链接
查看>>
刚开通博客
查看>>
前端lvs+keepalived 后端 lnmp 群集 mysql主从+sersync
查看>>
linux挂载windows共享文件夹的方法
查看>>
composer 报错笔记
查看>>
shell脚本真假判断(0为真,非0为假?或0为假,非0为真?)
查看>>
MFT的0x10标准属性数据结构
查看>>
用linux mail命令发送邮件时指定发送人
查看>>
bzoj 1492: [NOI2007]货币兑换Cash
查看>>
我的友情链接
查看>>
bzoj 1922: [Sdoi2010]大陆争霸
查看>>
solarwinds engineer's toolset V9.1 安装 及注册机
查看>>
linux --vsftpd虚拟用户登录时 530 Login incorrect排错
查看>>
linux centos 6.5 安装L2TP *** 每账号绑定1IP地址
查看>>
bond安装
查看>>
Lync方案建议书
查看>>
JS中的replace(RegExp, Function)
查看>>
Linux下统计代码行数
查看>>
老五的心经 byod环境安全问题:描述职责
查看>>
AngularJS之过滤器
查看>>