使用第三方组件:  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. 移动web开发常见的问题

    1.屏幕旋转的事件和样式 事件 window.orientation,取值:正负90表示横屏模式.0和180表现为竖屏模式: window.onorientationchange = function ...

  2. 谈谈c++中继承中的虚函数

      c++继承中的虚函数 c++是一种面向对象的编程语言的一个很明显的体现就是对继承机制的支持,c++中继承分很多种,按不同的分类有不同分类方法,比如可以按照基类的个数分为多继承和单继承,可以按照访问 ...

  3. map 和 for

    一.map 函数封装. ; [,,,,,,,].map(function(elem){ sum += elem; }) console.log('sum='+sum); 二.平时用for的写法. ,, ...

  4. Java 解决一些ACM中大数问题

    大数中算术运算结果的首选标度 运算 结果的首选标度 加 max(addend.scale(), augend.scale()) 减 max(minuend.scale(), subtrahend.sc ...

  5. 高级I/O函数

    给套接口上的I/O设置超时 1.调用alarm,在调用超过指定时间时产生SIGALARM信号,这涉及到信号处理,而且可能和进程中其他的alarm冲突 2.使用select阻塞在等待I/O上,selec ...

  6. 项目随笔之springmvc中freemark如何获取项目路径

    转载:http://blog.csdn.net/whatlookingfor/article/details/51538995 在SpringMVC框架中使用Freemarker试图时,要获取根路径的 ...

  7. charles抓https设置

    1下载charles和破解包 2安装证书 打开charles的help->SSL Proxying->install charles root certificate 选择你要安装的列表里 ...

  8. Python代码块缓存、小数据池

    引子 前几天遇到了这样一道Python题目:a='123',b='123',下列哪个是正确的? A. a != b B. a is b C. a==123 D. a + b =246 正确答案是B 是 ...

  9. WEBGL学习【十一】光照模型

    <!DOCTYPE HTML> <html lang="en"> <head> <title>Listing 7-3 and 7-4 ...

  10. 使用canvas保存网页为pdf文件支持跨域

    前言 之前上一篇随笔说了Canvas截图网页为图片,下来个新需求,把网页截图后保存为PDF文件供用户下载. 前文 Canvas截图网页为图片:https://www.cnblogs.com/bubub ...