使用第三方组件:  ICSharpCode.SharpZipLib

给按钮绑定一个点击事件

后台处理:

 public ActionResult DownZip(string ids)
{
if (string.IsNullOrEmpty(ids))
return Content("请选择要操作的数据"); var idArr = ids.Split(Constant.SEPARATOR.ToCharArray(), StringSplitOptions.RemoveEmptyEntries); #region
FileStream fs = null;
byte[] buffer = null;
string path = Server.MapPath("/Upload/Resource/压缩包.zip"); using (ZipFile file = ZipFile.Create(path))
{
file.BeginUpdate(); //通过这个名称格式化器,可以将里面的文件名进行一些处理。默认情况下,会自动根据文件的路径在zip中创建有关的文件夹。
file.NameTransform = new MyNameTransfom(); foreach (var id in idArr)
{
var model = new BLL.APPResourceBLL().GetModel(Convert.ToInt32(id));
file.Add(Server.MapPath(model.Path));
} file.CommitUpdate();
}
fs = new FileStream(path, FileMode.Open);
buffer = new byte[fs.Length];
fs.Position = ;
fs.Read(buffer, , buffer.Length);
fs.Close();
Response.Charset = "UTF-8";
Response.Buffer = false;
Response.ContentEncoding = System.Text.Encoding.GetEncoding("UTF-8");
Response.ContentType = "application/octet-stream";
Response.AddHeader("Content-Disposition", "attachment; filename=压缩包.zip");
Response.BinaryWrite(buffer);
Response.Flush();
Response.End();
return new EmptyResult();
#endregion
}

前台:

 function downZipEvent() {
if ($(".checkall:checked").size() < 1) {
$.dialog.alert('请选择下载文件!');
return false;
}
var ids = '';
$.each($(".checkall:checked"), function () {
ids += $(this).attr('typeid') + ',';
}) var form = $("<form>");
form.attr("style", "display:none");
form.attr("target", "");
form.attr("method", "post");
form.attr("action", "/AppManage/AppResource/DownZip");
var input1 = $("<input>");
input1.attr("type", "hidden");
input1.attr("name", "ids");
input1.attr("value", ids);
$("body").append(form);
form.append(input1);
form.submit();
form.remove();
}

参考: http://blog.csdn.net/kongwei521/article/details/51167903

      http://www.jb51.net/article/74867.htm

      http://www.cnblogs.com/kissdodog/p/3525295.html

总结:当以提交表单形式发送后台,可以直接调取浏览器下载;

异步的方式则无法直接调用, 可以返回状态,以表单形式在异步请求一次.

 $.get('/CheckBill/CompareBill', { billDate: billDate, type: type }, function (data) {
  var temp = data.split(':');
if (temp[0] == "ok") {
  $('#total').text(temp[1]);
  $.dialog.alert('对账成功');
} else if (temp[0] == "ex") {
$.dialog.alert(temp[1]);
subDown(billDate);
}
else {
  $.dialog.alert(data);
}
})

ajax异步加载:

https://www.cnblogs.com/wt627939556/p/6287242.html

http://www.jb51.net/article/46535.htm

https://www.cnblogs.com/fastmover/p/4791408.html

使用Jquery Ajax请求 下载压缩文件的更多相关文章

  1. Ajax 请求下载 Execl 文件

    通过Ajax请求下载Execl 的问题,掉进一个坑里半个多小时,特此来记录一下 . 起初  我误以为是后台的问题,然而调试了一下并不是这样的,也不会报错,且进入了success 函数. 以下的事件及请 ...

  2. jquery ajax请求方式与提示用户正在处理请稍等,等待数据返回时loading的显示

    1.jquery ajax请求方式与提示用户正在处理请稍等 为了提高用户体验度,我们通常会给出 “正在处理,请稍等!”诸如此类的提示.我们可通过设置$.ajax()下的参数beforeSend()来实 ...

  3. jQuery ajax读取本地json文件

    jQuery ajax读取本地json文件 json文件 { "first":[ {"name":"张三","sex": ...

  4. jquery.ajax请求aspx和ashx的异同 Jquery Ajax调用aspx页面方法

    1.jquery.ajax请求aspx 请求aspx的静态方法要注意一下问题: (1)aspx的后台方法必须静态,而且添加webmethod特性 (2)在ajax方法中contentType必须是“a ...

  5. SSM框架下,使用ajax请求上传文件(doc\docx\excel\图片等)

    1.准备工作 1.1.添加上传必要jar包 <dependency> <groupId>commons-io</groupId> <artifactId> ...

  6. 使用java的 htpUrlConnection post请求 下载pdf文件,然后输出到页面进行预览和下载

    使用java的 htpUrlConnection post请求 下载pdf文件,然后输出到页面进行预览和下载 2018年06月07日 10:42:26 守望dfdfdf 阅读数:235 标签: jav ...

  7. jQuery ajax 请求php遍历json数组到table中

    html代码(test.html),js在html底部 <!DOCTYPE html> <html lang="en"> <head> < ...

  8. jquery Ajax请求示例,jquery Ajax基本请求方法示例

    jquery Ajax请求示例,jquery Ajax基本请求方法示例 ================================ ©Copyright 蕃薯耀 2018年5月7日 https: ...

  9. 原生js,jquery ajax请求以及jsonp的调用

    ajax    是用来处理前后端交互的技术,可以改善用户体验,其本质是    XMLHttpRequest,异步访问服务器并发送请求数据,服务器返回响应的数据,以页面无刷新的效果改变页面中的局部内容  ...

随机推荐

  1. 修改织梦plus目录名

    1.修改plus目录名 修改inlclude文件夹下common.inc.php 140行 //插件目录,这个目录是用于存放计数器.投票.评论等程序的必要动态程序 $cfg_plus_dir = $c ...

  2. mysql数据库索引原理及其常用引擎对比

    索引原理 树数据结构及其算法简介 B+/-树: - 多路搜索树; - 时间复杂度O(logdN);h为节点出度,d为深度 红黑树: - 节点带有颜色的平衡二叉树 - 时间复杂度O(log2N);h节点 ...

  3. How to share memory between services and user processes?

    除了必要的InitializeSecurityDescriptor和SetSecurityDescriptorDacl, 内存映射文件名必须GLOBAL开头.

  4. JDBC+MYSQL初始学习

    JDBC+MYSQL初始学习 一.学习准备 Eclipse 开发工具  + mysql数据库+navicat 数据库连接工具 Mysql的数据库连接驱动jar包  + testing测试集成+mave ...

  5. 00--Linux常用命令大全

    系统信息 arch 显示机器的处理器架构(1) uname -m 显示机器的处理器架构(2) uname -r 显示正在使用的内核版本 dmidecode -q 显示硬件系统部件 - (SMBIOS ...

  6. 取/etc/password文件最后一个单词的最后一个字符

    三种方法都可以 [root@localhost ~]# sed -n "1,5 s#.*\(.\)#\1#p" /etc/passwd [root@localhost ~]# se ...

  7. 基于fullpage的自动播放,手动播放,暂停页面的功能

    功能如下: 1.默认加载方式为“自动播放 ”方式,即从第1屏至第5屏 页面循环加载显示,每屏每次仅显示1个页面,页面间停留时间为“10”秒2.手动播放过程中,按数字键“1”-“5”,将直接切到指定页面 ...

  8. 使用awk提取字符串中的数字或字母

    1.提取字符串中的数字 $ echo 'dsFUs34tg*fs5a%8ar%$#@' |awk -F "" ' { for(i=1;i<=NF;i++) { if ($i ...

  9. [luogu3237 HNOI2014] 米特运输 (树形dp)

    传送门 Description 米特是D星球上一种非常神秘的物质,蕴含着巨大的能量.在以米特为主要能源的D星上,这种米特能源的运输和储存一直是一个大问题. D星上有N个城市,我们将其顺序编号为1到N, ...

  10. 运行级别(init)

    一.运行级别(查看:cat /etc/inittab) 级别: 0:关机 1:服务器出问题(单用户状态) 2:无NFS的多用户模式 3:完整的多用户模式 4:无保留无使用 5:桌面模式 6:重新启动 ...