使用ZipForge和C#压缩多个文件时清空存档

时间:2012-03-13 16:21:25

标签: c#

我有这个小代码:

 HttpContext.Current.Response.Clear();

 if ( files.Contains( ',' ) ) {
    HttpContext.Current.Response.ContentType = "application/zip";
    HttpContext.Current.Response.AddHeader( "content-disposition", "filename=arch-01.zip");

    string[] split = files.Split( ',' );
    ZipForge zip = new ZipForge();
    try {
       zip.FileName = Path.Combine( @"C:\Item", "arch-01.zip");
       zip.OpenArchive( System.IO.FileMode.Create );
       zip.BaseDir = @"C:\";

       foreach ( string file in split ) {
          zip.AddFiles( file );
       }

       zip.CloseArchive();

    } catch ( Exception e ) {
       Console.Write( e.Message );
    }
 }

我希望在压缩后在浏览器中显示Open - Save As对话框。文件存在,我们假设files包含

  C:\Item\a1.xls,C:\Item\a2.xls.

但是存档总是空的。我的错在哪里?我有C:的许可。 我在回答标题时出错了吗?

问题已解决

我添加了以下代码:

HttpContext.Current.Response.WriteFile( zip.FileName );

现在有效:)

2 个答案:

答案 0 :(得分:0)

我会尝试将你的问题分解出来以找出问题所在。制作一个控制台应用程序,用于压缩您想要压缩的文件,看看是否有效。之后,看看你是否可以下载你创建的zip和zip正确的工作,同时从你的asp.net网站下载它。代码中似乎有两件事情很好,但我们需要确定实际问题的位置。

答案 1 :(得分:0)

我猜您的响应标题中缺少附件。 它应该是这样的

HttpContext.Current.Response.AddHeader(“Content-Disposition”,“attachment; filename = arch-01.zip”);

这应该可以解决我想的问题。