服務器文檔下載zip格式

     恰好此次項目中遇到了這個東西,就來弄一下,挺簡單的,可是前臺調用的時候弄錯了,浪費了大半天的時間,本人也是菜鳥一枚。開始吧。(MVC的)javascript

   

@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) {java

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

<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(','))
 }post

</script>  ui

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

   using (ZipFile file = ZipFile.Create(ms))  //壓縮包建立到內存
   {
    file.BeginUpdate();
    file.NameTransform = new IndexController();//經過這個名稱格式化器,能夠將裏面的文件名進行一些處理。默認狀況下,會自動根據文件的路徑在zip中建立有關的文件夾。excel

    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)
     {code

      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);orm

   }ip

   //將中文轉換預防出現亂碼
   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();  } }

相關文章
相關標籤/搜索