刚好这次项目中遇到了这个东西,就来弄一下,挺简单的,但是前台调用的时候弄错了,浪费了大半天的时间,本人也是菜鸟一枚。开始吧。(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. 小白Monkey学习笔记

    Monkey是google提供的一款对Android app进行压力测试工具,基于随机坐标位置,进行点击.滑动.输入等操作. Monkey的环境配置 pc电脑需要配置adb环境 Monkey程序由An ...

  2. rails5 后台入门(api mode)

    1. Installation (Centos为例) 1.1安装rvm (http://rvm.io/) gpg2 --recv-keys 409B6B1796C275462A1703113804BB ...

  3. webapi使用swagger出现“Cannot read property 'parameters' of null”

    前端时间在webapi项目使用swagger来提供接口文档及测试工具,按网上方法(http://wmpratt.com/swagger-and-asp-net-web-api-part-1)配置好之后 ...

  4. Python之路【第五篇】函数

    4.1 函数的定义 函数是指将一组语句的集合通过一个名字(函数名)封装起来,要想执行这个函数,只需调用其函数名即可 4.2 函数的创建 函数名的命名规则: 1.函数名必须以下划线或字母开头,可以包含任 ...

  5. orcale mysql基本的分页查询法

    orcale分页查询sql语句: SELECT * FROM ( SELECT A.*, ROWNUM RN FROM (SELECT * FROM TABLE_NAME) A WHERE ROWNU ...

  6. 【webpack】-- 入门与解析

    每次学新东西总感觉自己是不是变笨了,看了几个博客,试着试着就跑不下去,无奈只有去看官方文档. webpack是基于node的.先安装最新的node. 1.初始化 安装node后,新建一个目录,比如ht ...

  7. Spark学习之wordcount程序

    实例代码: import org.apache.spark.SparkConf; import org.apache.spark.api.java.JavaPairRDD; import org.ap ...

  8. 高手养成计划基础篇-Linux第二季

    高手养成计划基础篇-Linux第二季   本文来源:i春秋社区-分享你的技术,为安全加点温度   前言 前面我们学习了文件处理命令和文件搜索命令,简单的了解了一下Linux,但是仅仅了解这样还不行,遇 ...

  9. 搞Java的年薪 40W 是什么水平?

    既然楼主提到年薪40w,那我们看看什么公司,什么级别可以给到,再看看要求.阿里是Java大厂,所以可以参考阿里的标准. 阿里一般是16薪水,所以就是税前2.5w,在阿里应该是P6就可以达到,而对P6的 ...

  10. JDK设计模式之——工厂模式

    1.首先来看最普通的工厂模式 1.1 定义一个需要工厂生产的java类 package javaee.net.cn.factory; class Person{ private int age; pr ...