使用Jquery Ajax请求 下载压缩文件
使用第三方组件: 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请求 下载压缩文件的更多相关文章
- Ajax 请求下载 Execl 文件
通过Ajax请求下载Execl 的问题,掉进一个坑里半个多小时,特此来记录一下 . 起初 我误以为是后台的问题,然而调试了一下并不是这样的,也不会报错,且进入了success 函数. 以下的事件及请 ...
- jquery ajax请求方式与提示用户正在处理请稍等,等待数据返回时loading的显示
1.jquery ajax请求方式与提示用户正在处理请稍等 为了提高用户体验度,我们通常会给出 “正在处理,请稍等!”诸如此类的提示.我们可通过设置$.ajax()下的参数beforeSend()来实 ...
- jQuery ajax读取本地json文件
jQuery ajax读取本地json文件 json文件 { "first":[ {"name":"张三","sex": ...
- jquery.ajax请求aspx和ashx的异同 Jquery Ajax调用aspx页面方法
1.jquery.ajax请求aspx 请求aspx的静态方法要注意一下问题: (1)aspx的后台方法必须静态,而且添加webmethod特性 (2)在ajax方法中contentType必须是“a ...
- SSM框架下,使用ajax请求上传文件(doc\docx\excel\图片等)
1.准备工作 1.1.添加上传必要jar包 <dependency> <groupId>commons-io</groupId> <artifactId> ...
- 使用java的 htpUrlConnection post请求 下载pdf文件,然后输出到页面进行预览和下载
使用java的 htpUrlConnection post请求 下载pdf文件,然后输出到页面进行预览和下载 2018年06月07日 10:42:26 守望dfdfdf 阅读数:235 标签: jav ...
- jQuery ajax 请求php遍历json数组到table中
html代码(test.html),js在html底部 <!DOCTYPE html> <html lang="en"> <head> < ...
- jquery Ajax请求示例,jquery Ajax基本请求方法示例
jquery Ajax请求示例,jquery Ajax基本请求方法示例 ================================ ©Copyright 蕃薯耀 2018年5月7日 https: ...
- 原生js,jquery ajax请求以及jsonp的调用
ajax 是用来处理前后端交互的技术,可以改善用户体验,其本质是 XMLHttpRequest,异步访问服务器并发送请求数据,服务器返回响应的数据,以页面无刷新的效果改变页面中的局部内容 ...
随机推荐
- 纯CSS3文字Loading动画特效
纯CSS3文字Loading动画特效是一款个性的loading文字加载动画. 在线演示本地下载
- 算法 之 3n+1问题
卡拉兹(Callatz)猜想: 对任何一个自然数n,如果它是偶数,那么把它砍掉一半:如果它是奇数,那么把(3n+1)砍掉一半.这样一直反复砍下去,最后一定在某一步得到n=1.卡拉兹在1950年的世界数 ...
- java_poi
import java.io.File; import java.io.FileOutputStream; import java.io.IOException; import org.apache. ...
- ZBrush 2018软件安装激活教程一点通
Zbrush下载地址:https://pixologic.com/CD 安装教程:(此CD代码仅有效一次,一旦此代码被使用,您将收到一封包含你账户信息的电子邮件.请把那封电子邮件保存在你的记录里.) ...
- java真实面试题(2)
1,递归算法的实行过程,一般来说,可以分为()和()两个阶段,若一个问题的求解既可以用递归也可以用递推时,则往往用(),因为().贪婪法是一种()的算法. 答:递归算法分为递推和回归两个阶段,递推效率 ...
- iframe里面开启全屏allowfullscreen="true"
<iframe id="J_iframe" width="100%" height="100%" src="client-a ...
- Java中的常量
常量的概念 是指在Java程序中固定不变的数据.我们可以理解为是一种特殊的变量,它的值被设定后,在程序运行过程中不允许改变. 常量的分类 整数常量: 所有的整数 例如 100 -100 123 ...
- 05 Django与Ajax
一.Ajax简介 AJAX(Asynchronous Javascript And XML)翻译成中文就是“异步Javascript和XML”.即使用Javascript语言与服务器进行异步交互, ...
- Python中用绘图库绘制一条蟒蛇
一..构思设计蟒蛇的长度颜色等 首先,我们来构思一个简单的蟒蛇.让它的颜色为黄色,形状为一条正在爬行的蟒蛇. 二..准备绘图库 Python中有一个绘图库叫turtle我们先引入它. import t ...
- Python——Day1(笔记代码)
#print('Hello World')"""n1=input('请输入用户名:')print(n1)n2=input('请输入密码:')print(n2)" ...