从服务器下载文件

protected void Page_Load(object sender, EventArgs e)
    {

        string id = Request.QueryString["i"];
        ProductBO _bo = BLLFactory.GetBal<ProductBO>(userInfo);
        string[] rest = _bo.GetFileInfo(id);
        string num = DateTime.Now.ToString("yyyyMMddHHmmss");
        Response.ContentType = "text/plain";
        Response.Charset = "utf-8";

        if (string.IsNullOrEmpty(rest[0]) && string.IsNullOrEmpty(rest[1]))
        {
            Response.Write("FALSE^Template downloading failed.");
            Response.End();
            return;
        }
        //文件处理
        MemoryStream ms = new MemoryStream();
        byte[] buffer = null;
        //FileInfo fileInfo = new FileInfo(path);
        using (ZipFile file = ZipFile.Create(ms))
        {
            file.BeginUpdate();
            file.NameTransform = new IndexController();//通过这个名称格式化器,可以将里面的文件名进行一些处理。默认情况下,会自动根据文件的路径在zip中创建有关的文件夹。
            if (!string.IsNullOrEmpty(rest[0])) //rest[0],rest[1]为地址
            {
                file.Add(rest[0]);
            }
            if (!string.IsNullOrEmpty(rest[1]))
            {
                file.Add(rest[1]);
            }
            file.CommitUpdate();

            buffer = new byte[ms.Length];
            ms.Position = 0;
            ms.Read(buffer, 0, buffer.Length);

            Response.Clear();
            Response.ClearContent();
            Response.ClearHeaders();
            Response.AddHeader("Content-Disposition", "attachment;filename=" + num + ".zip");
            Response.AddHeader("Content-Length", buffer.Length.ToString());
            Response.AddHeader("Content-Transfer-Encoding", "binary");
            Response.ContentType = "application/octet-stream";
            Response.ContentEncoding = System.Text.Encoding.GetEncoding("utf-8");
            Response.BinaryWrite(buffer);
            Response.Flush();
            Response.End();
        }

    }

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

        #region INameTransform 成员

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

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

        #endregion
    }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值