C# 如何返回一些内容的.NET流,但同时将其压缩
我有一个很大的C# 如何返回一些内容的.NET流,但同时将其压缩,c#,.net,stream,C#,.net,Stream,我有一个很大的XDocument。我正试着从某个地方把这句话说出来: 公共流响应(Func源) 为此,我做了: Stream stream = new MemoryStream(); // Create a stream xmlDocument.Save(stream); // Save XDocument into the stream stream.Position = 0; return new StreamResponse(() => stream); 这很好 现在
XDocument
。我正试着从某个地方把这句话说出来:
公共流响应(Func源)
为此,我做了:
Stream stream = new MemoryStream(); // Create a stream
xmlDocument.Save(stream); // Save XDocument into the stream
stream.Position = 0;
return new StreamResponse(() => stream);
这很好
现在,有没有可能改变这一点,让我从内存流中导出一个ZIP
像这样=>XDocument=>MemoryStream=>ZIP流=>流端点
Stream stream = new MemoryStream(); // Create a stream
Stream compressed = new System.IO.Compression.GZipStream(stream, System.IO.Compression.CompressionLevel.Optimal);
xmlDocument.Save(compressed); // Save XDocument into the stream
compressed.Position = 0;
return new StreamResponse(() => stream);
文件:
GZipStream是来救你的 从MSDN: GZipStream类 提供用于压缩和解压缩流的方法和属性 是的,使用 将内存流传递给save方法。大概是这样的:
using (ZipFile zip = new ZipFile())
{
// add this map file into the "images" directory in the zip archive
zip.AddFile("c:\\images\\personal\\7440-N49th.png", "images");
// add the report into a different directory in the archive
zip.AddFile("c:\\Reports\\2008-Regional-Sales-Report.pdf", "files");
zip.AddFile("ReadMe.txt");
zip.Save(myStream);
}