zoukankan      html  css  js  c++  java
  • ajax下载多文件,并且打包 C#中 ,文件批下载zip

    //提交要下载的文件

    $.ajax({
    url:"/sub/ZipFile.aspx",
    data:"paras="+datas,
    type: 'HEAD',
    error: function () {
    alert("压缩包不存在!");
    },
    success: function () {
    window.location.href = "/sub/ZipFile.aspx?paras=" + datas;
    window.close;
    }
    });

    //接收文件并调用进行压缩

    public string paras = "";//要下载的文件路径
    MyNameTransfom mt = new MyNameTransfom();
    protected void Page_Load(object sender, EventArgs e)
    {
    paras = Request.QueryString["paras"];//要下载的文件名称
    if (paras.Length > 0)
    {
    string[] aa = paras.Split(',');
    mt.ZipFileDownload(aa, DateTime.Now.ToString("yyyyMMddhhMmss") + "_17cn.zip", HttpContext.Current);
    }
    }
    }

    //对文件进行批下载打包

    public class MyNameTransfom : ICSharpCode.SharpZipLib.Core.INameTransform
    {

    #region INameTransform 成员

    public string TransformDirectory(string name)
    {
    return null;
    }

    public string TransformFile(string name)
    {
    return Path.GetFileName(name);
    }

    #endregion


    /// <summary>
    /// 批量进行多个文件压缩到一个文件、
    /// <param name="files">文件列表(绝对路径)</param> 这里用的数组,你可以用list 等或者
    /// <param name="zipFileName">生成的zip文件名称</param>
    /// </summary>
    public void ZipFileDownload(string[] files, string zipFileName,HttpContext Context)
    {
    MemoryStream ms = new MemoryStream();
    byte[] buffer = null;

    using (ZipFile file = ZipFile.Create(ms))
    {
    file.BeginUpdate();

    file.NameTransform = new MyNameTransfom();
    foreach (var item in files)
    {
    if (File.Exists(Context.Server.MapPath(item)))
    file.Add(Context.Server.MapPath(item));

    }
    file.CommitUpdate();
    buffer = new byte[ms.Length];
    ms.Position = 0;
    ms.Read(buffer, 0, buffer.Length); //读取文件内容(1次读ms.Length/1024M)
    ms.Flush();
    ms.Close();
    }
    Context.Response.Clear();
    Context.Response.Buffer = true;
    Context.Response.ContentType = "application/x-zip-compressed";
    Context.Response.AddHeader("content-disposition", "attachment;filename=" + HttpUtility.UrlEncode(zipFileName));
    Context.Response.BinaryWrite(buffer);
    Context.Response.Flush();
    Context.Response.End();
    }
    }

    }

  • 相关阅读:
    利用Clojure统计代码文件数量和代码行数
    Workflow:添加工作流存储功能
    MongoDB:最简单的增删改查(Oops,可能太简单了)
    《WF in 24 Hours》读书笔记
    推荐一个学习python的网站
    Inter系列处理器名称浅析
    [Android1.5]TextView跑马灯效果
    Code::Blocks 的配色方案
    PuTTY + Xming 远程使用 Linux GUI
    Linux下查看文件和文件夹大小
  • 原文地址:https://www.cnblogs.com/liwp/p/6018667.html
Copyright © 2011-2022 走看看