【问题标题】:ZipStorer - Zip Text in MemoryStream, Transmit through httpResponse, unable open as Zip FileZipStorer - MemoryStream 中的 Zip 文本,通过 httpResponse 传输,无法作为 Zip 文件打开
【发布时间】:2013-12-23 10:49:46
【问题描述】:

注意:我自己解决了这个问题。请参阅下面的答案。

我正在使用 ZipStorer 压缩 ASP.NET C# 4.0 WebForm 中的文件。

在我在 MemoryStream 中创建 Zip 并使用 httpResponse 传输它后,客户端用户无法将文件作为 Zip 文件打开。

有什么建议吗?谢谢。

下面是我的代码:

string text = GetLongText();
byte[] ba = Encoding.UTF8.GetBytes(text);
using (MemoryStream ms = new MemoryStream())
{
    using (ZipStorer zip = ZipStorer.Create(ms, "My Zip File"))
    {
        zip.AddStream(ZipStorer.Compression.Deflate, "MyText.txt", new MemoryStream(ba), DateTime.Now, "My Text");

        Response.Clear();
        Response.AppendHeader("content-disposition", "attachment; filename=MyZip.zip");
        Response.ContentType = "application/zip";
        ms.WriteTo(Response.OutputStream);
        Response.End();
    }
}

【问题讨论】:

  • 您说您发送了文件但已损坏。正确吗?
  • @Aristos 是的,文件已损坏。

标签: c# asp.net zip memorystream zipstorer


【解决方案1】:

我自己解决了这个问题。以下是代码:

string text = GetLongText();
byte[] ba = Encoding.UTF8.GetBytes(text);
using (MemoryStream ms = new MemoryStream())
{
    using (ZipStorer zip = ZipStorer.Create(ms, "My Zip"))
    {
        zip.AddStream(ZipStorer.Compression.Deflate, "text.txt", new MemoryStream(ba), DateTime.Now, "My Text");
    }
    Response.AppendHeader("content-disposition", "attachment; filename=MyZip.zip");
    Response.ContentType = "application/zip";
    Response.BinaryWrite(ms.ToArray());
    Response.End();
}
}

【讨论】:

    猜你喜欢
    • 2016-01-18
    • 2015-04-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多