使用ASP.NET如何从字符串数组创建zip文件?

时间:2014-05-15 13:50:55

标签: c# asp.net vb.net zip

我使用的是ASP.NET,我更喜欢VB作为语言,但我应该能够根据自己的需要翻译C#。

我有一个字符串数组,我想将其作为单个文件发送到浏览器供用户保存。在搜索互联网时,将多个文件发送到浏览器的最常见解决方案是将它们压缩,并发送一个zip文件。

为此,我需要学习一些我不知道的事情;

1)我可以使用哪些工具/方法(最好内置于IIS7上运行的ASP.NET)来创建zip文件流以发送到浏览器?

2)我如何欺骗zip工具以为它从内存中的字符串中获取多个文件?我假设我需要创建文件流,但是如何告诉方法文件名是什么等等?

如果有一个与我需要的东西大致相似的例子,那就太好了。请指点我。

感谢您的帮助。

1 个答案:

答案 0 :(得分:2)

方法可能是:

  1. 将字符串转换为流
  2. 将该流中的数据添加到zip文件
  3. 将zip文件写入响应流
  4. 下面的代码示例:

    ZipFile zipFile = new ZipFile();
    int fileNumber = 1;
    
    foreach(string str in strArray)
    {
        // convert string to stream
        byte[] byteArray = Encoding.UTF8.GetBytes(contents);
        MemoryStream stream = new MemoryStream(byteArray);
    
        stream.Seek(0, SeekOrigin.Begin);
    
        //add the string into zip file with a name
        zipFile.AddEntry("String" + fileNumber.ToString() + ".txt", "", stream);
    }
    
    Response.ClearContent();
    Response.ClearHeaders();
    Response.AppendHeader("content-disposition", "attachment; filename=strings.zip");
    
    zipFile.Save(Response.OutputStream);
    zipFile.Dispose();