刚好这次项目中遇到了这个东西,就来弄一下,挺简单的,但是前台调用的时候弄错了,浪费了大半天的时间,本人也是菜鸟一枚。开始吧。(MVC的)

@using Rattan.Core.Utility;
@{
 string ButtonScript = string.Empty;
}
@if (Rattan.Basic.Globals.GetIsAuth(ViewBag.AuthValues, "QuickExport"))
{
 ButtonScript = @"
   {
       position: 0,
       id: 'btnQuickExport',
       text: '导出稿件附件',
       disabled: false,
       icon: 'pwd.gif',
       handler: function ()
       {
        QuickExport();
       }
      }";
}
<script type="text/javascript" language="javascript">
  helper.onBeforePageLoad = function (params) {

}
  helper.onAfterPageLoad = function () {
    m_grid.insertToolBar(
    [
      @Html.Raw(ButtonScript)
    ]);
  }
</script>

<script type="text/javascript" language="javascript">
 function QuickExport() {                       
 // var rows = m_grid.getSelections();       ---这个是不打包,一个个跳出来的,没卵用,当时应付的
 // $.each(rows, function (i, row) {
 //  var url = row.filelist + "?" + Math.random();
 //  window.setTimeout(function () {
 //   window.open(url, "_blank");
 //  }, 1000);
 // });
  var rows = m_grid.getSelections();
  var Draft_Id_Array = [];
  $.each(rows, function (i, row) {
   Draft_Id_Array.push(row.Draft_Id);
  });
  if (!Draft_Id_Array.length) {
   alert("至少选中一行!");
   return;
  }
  var url = "/BasicInfo/Meeting_Draft/ZipFileByCode";
  var postParams = {
   Draft_Ids: Draft_Id_Array.join(',')
  };
  window.open(url + '?Draft_Ids=' + Draft_Id_Array.join(','))
 }

</script>

/// <summary>
  /// 压缩打包文件
  /// </summary>
  public ActionResult ZipFileByCode(string Draft_Ids)//string Draft_Id
  {
   MemoryStream ms = new MemoryStream();
   byte[] buffer = null;

using (ZipFile file = ZipFile.Create(ms))  //压缩包创建到内存
   {
    file.BeginUpdate();
    file.NameTransform = new IndexController();//通过这个名称格式化器,可以将里面的文件名进行一些处理。默认情况下,会自动根据文件的路径在zip中创建有关的文件夹。

string where = "Draft_Id in (" + Draft_Ids + ")";
    var draftInfo = Meeting_DraftRepository.Instance.GetMany(where).ToList();
    foreach (var draftInfoList in draftInfo)
    {
     if (string.IsNullOrWhiteSpace(draftInfoList.filelist) || draftInfoList.filelist.IndexOf('/') < 0)
     {

continue;
     }
     var positonIndex = draftInfoList.filelist.LastIndexOf('/');
    string fileName = draftInfoList.filelist.Substring(positonIndex, draftInfoList.filelist.Length - positonIndex);//客户端保存的文件名
     file.Add(Server.MapPath(draftInfoList.filelist));
    }
    file.CommitUpdate();
    buffer = new byte[ms.Length];
    ms.Position = 0;
    ms.Read(buffer, 0, buffer.Length);

}

//将中文转换预防出现乱码
   string excelName = "稿件附件".ToString();

excelName = HttpUtility.UrlEncode(excelName, System.Text.Encoding.UTF8);

DateTime dt = DateTime.Now;
   Response.AddHeader("content-disposition", "attachment;filename=" + excelName + DateTime.Now.ToString("yyyyMMdd")+ ".zip");
   Response.BinaryWrite(buffer);
   Response.Flush();
   Response.End();
   return View();
  }
 }

服务器文档下载zip格式的更多相关文章

  1. 服务器文档下载zip格式 SQL Server SQL分页查询 C#过滤html标签 EF 延时加载与死锁 在JS方法中返回多个值的三种方法(转载) IEnumerable,ICollection,IList接口问题 不吹不擂,你想要的Python面试都在这里了【315+道题】 基于mvc三层架构和ajax技术实现最简单的文件上传 事件管理

    服务器文档下载zip格式   刚好这次项目中遇到了这个东西,就来弄一下,挺简单的,但是前台调用的时候弄错了,浪费了大半天的时间,本人也是菜鸟一枚.开始吧.(MVC的) @using Rattan.Co ...

  2. 关于springmvc下服务器文件打包成zip格式下载功能

    关于springmvc下服务器文件打包成zip格式下载功能 2016年09月21日 11:22:14 toxic_guantou 阅读数:5731更多 个人分类: 技术点存储   版权声明:本文为博主 ...

  3. DevExpress v15.2.4帮助文档下载(全)

    原文地址:http://www.devexpresscn.com/Resources/Documentation-498.html DevExpress v15.2帮助文档下载列表大全来啦!包含.ne ...

  4. 自己总结的C#编码规范--7.文档下载 & 总结

    今天终于把这一系列的编码规范写完了,这个编码规范算上前面阅读相关书籍,前前后后总共花了一个月的时间,也算是个人的呕心沥血之作了. 本来也没打算把这个系列写的这么长,但是在写的过程中自己搜了相关的网上资 ...

  5. 干货分享!DevExpress v17.1最新版帮助文档下载大全

    DevExpress v17.1.5帮助文档下载列表大全来啦!包含.NET.VCL.HTML/JS系列所有帮助文档,提供CHM和PDF两个版本.除已停止更新的Silverlight.Windows 8 ...

  6. DevExpress v18.1最新版帮助文档下载大全

    DevExpress v18.1.4帮助文档下载列表大全来啦!包含.NET.VCL.HTML/JS系列所有帮助文档,提供CHM和PDF两个版本.除已停止更新的Silverlight.Windows 8 ...

  7. DevExpress v17.2最新版帮助文档下载大全

    DevExpress v17.2.4帮助文档下载列表大全来啦!包含.NET.VCL.HTML/JS系列所有帮助文档,提供CHM和PDF两个版本.除已停止更新的Silverlight.Windows 8 ...

  8. ext 文档下载地址

    ext官方太鬼了,离线文档下载地址藏的太深了,找出来真不容易 http://docs.sencha.com/misc/guides/offline_docs.html

  9. web开发--文档下载

    GOOGLE在线文档下载地址分享(GOOGLE的文档地址暂不能用了,会放在其它位置..) GOOGLE的在线文档功能好象挂掉了...等找个其它存放的位置把这些文档再上传上去... 存在GOOGLE里面 ...

随机推荐

  1. 2019/3/1 IO流的学习总结

    Java学习之IO流 学习Io流之前,我们先了解文件,以及在Java中对文件的操作.首先对文件进行操作,就必须用 File F = new File(“d:\\文件名”); 表示该文件或文件夹的地址寻 ...

  2. 【Solidity】学习(4)

    solidity函数修饰符 view  没有改变任何值或者写任何东西.只能读取,不能修改 function sayHello() public view returns (string) { } pu ...

  3. lua-01

    ctrl + shift + L 多行编辑 ctrl + D 继续向下选中下一个相同的文本 Alt + F3 选中所有相同所选中德文本 =>Lua的快捷键 回调代码: function fact ...

  4. django查询数据库无法过滤月份的解决

    我试过,当settings里的:USE_TZ = False时也可以查询,但是数据库里的时间就会显示错的 解决方法是可以再终端输入 mysql_tzinfo_to_sql /usr/share/zon ...

  5. JAVA RSA加密AES加密

    RSA加密: import sun.misc.BASE64Decoder; import sun.misc.BASE64Encoder; import javax.crypto.Cipher; imp ...

  6. 通过Weeman+Ettercap配合拿下路由器管理权限

    通过Weeman+Ettercap配合拿下路由器管理权限 本文转自>>>i春秋学院 本篇文章主要介绍如何在接入无线网络后如何拿到路由器的管理权限,至于如何得到路由器连接密码可以参考 ...

  7. LabVIEW(七):多态VI

    1.多态VI概念:可以处理多种不同数据类型的VI被称为“多态VI”.多态VI根据输入或输出的 数据类型,再选择调用一个针对这种数据类型实现功能的VI,这些针对某种数据类型实现功能的VI称作“实例VI” ...

  8. NumPy 学习笔记(一)

    NumPy: 1.NumPy 是一个功能强大的第三方库(需要自己安装),主要用于对多维数组执行计算:   它提供了大量的库函数和操作,可以帮助程序员更轻松地进行数值计算 2.可以和另外两个第三方库 S ...

  9. Spring Boot 自定义日志详解

    本节内容基于 Spring Boot 2.0. 你所需具备的基础 什么是 Spring Boot? Spring Boot 核心配置文件详解 Spring Boot 开启的 2 种方式 Spring ...

  10. css3新特性总结

    一.什么是css3 css用于控制网页的样式和布局,css3是css的升级版本,受浏览器限制,跨浏览器开发有点复杂.css3完全向后兼容 二.css3新特性 1.边框 css3的边框有如下属性: (1 ...