使用Jquery Ajax请求 下载压缩文件
Posted 查克拉的觉醒
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用Jquery Ajax请求 下载压缩文件相关的知识,希望对你有一定的参考价值。
使用第三方组件: ICSharpCode.SharpZipLib
给按钮绑定一个点击事件
后台处理:
1 public ActionResult DownZip(string ids) 2 { 3 if (string.IsNullOrEmpty(ids)) 4 return Content("请选择要操作的数据"); 5 6 var idArr = ids.Split(Constant.SEPARATOR.ToCharArray(), StringSplitOptions.RemoveEmptyEntries); 7 8 #region 9 FileStream fs = null; 10 byte[] buffer = null; 11 string path = Server.MapPath("/Upload/Resource/压缩包.zip"); 12 13 using (ZipFile file = ZipFile.Create(path)) 14 { 15 file.BeginUpdate(); 16 17 //通过这个名称格式化器,可以将里面的文件名进行一些处理。默认情况下,会自动根据文件的路径在zip中创建有关的文件夹。 18 file.NameTransform = new MyNameTransfom(); 19 20 foreach (var id in idArr) 21 { 22 var model = new BLL.APPResourceBLL().GetModel(Convert.ToInt32(id)); 23 file.Add(Server.MapPath(model.Path)); 24 } 25 26 file.CommitUpdate(); 27 } 28 fs = new FileStream(path, FileMode.Open); 29 buffer = new byte[fs.Length]; 30 fs.Position = 0; 31 fs.Read(buffer, 0, buffer.Length); 32 fs.Close(); 33 Response.Charset = "UTF-8"; 34 Response.Buffer = false; 35 Response.ContentEncoding = System.Text.Encoding.GetEncoding("UTF-8"); 36 Response.ContentType = "application/octet-stream"; 37 Response.AddHeader("Content-Disposition", "attachment; filename=压缩包.zip"); 38 Response.BinaryWrite(buffer); 39 Response.Flush(); 40 Response.End(); 41 return new EmptyResult(); 42 #endregion 43 }
前台:
1 function downZipEvent() { 2 if ($(".checkall:checked").size() < 1) { 3 $.dialog.alert(\'请选择下载文件!\'); 4 return false; 5 } 6 var ids = \'\'; 7 $.each($(".checkall:checked"), function () { 8 ids += $(this).attr(\'typeid\') + \',\'; 9 }) 10 11 var form = $("<form>"); 12 form.attr("style", "display:none"); 13 form.attr("target", ""); 14 form.attr("method", "post"); 15 form.attr("action", "/AppManage/AppResource/DownZip"); 16 var input1 = $("<input>"); 17 input1.attr("type", "hidden"); 18 input1.attr("name", "ids"); 19 input1.attr("value", ids); 20 $("body").append(form); 21 form.append(input1); 22 form.submit(); 23 form.remove(); 24 }
参考: http://blog.csdn.net/kongwei521/article/details/51167903
http://www.jb51.net/article/74867.htm
http://www.cnblogs.com/kissdodog/p/3525295.html
总结:当以提交表单形式发送后台,可以直接调取浏览器下载;
异步的方式则无法直接调用, 可以返回状态,以表单形式在异步请求一次.
1 $.get(\'/CheckBill/CompareBill\', { billDate: billDate, type: type }, function (data) { 2 var temp = data.split(\':\'); 3 if (temp[0] == "ok") { 4 $(\'#total\').text(temp[1]); 5 $.dialog.alert(\'对账成功\'); 6 } else if (temp[0] == "ex") { 7 $.dialog.alert(temp[1]); 8 subDown(billDate); 9 } 10 else { 11 $.dialog.alert(data); 12 } 13})
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请求 下载压缩文件的主要内容,如果未能解决你的问题,请参考以下文章