【发布时间】:2016-05-03 06:23:31
【问题描述】:
我有 ASP.NET Web API 项目,用户可以在其中从数据库下载一些东西。 我的下载控制器从数据库实例中获取数据。每个结果都有一个 blob 字段,它是某种数据 (1)。 我想将每个结果添加到 ZIP 文件 (2)。毕竟我发送 HTTP 响应添加了我的流内容。
List<Result> results = m_Repository.GetResultsForResultId(given_id_by_request);
// 1
foreach (Result result in results)
{
string fileName = String.Format("{0}-{1}.bin", id >> 16, result.Id);
zipFile.AddEntry(fileName, result.Value);
}
// 2
PushStreamContent pushStreamContent = new PushStreamContent((stream, content, context) =>
{
zipFile.Save(stream);
stream.Close();
}
response = new HttpResponseMessage(HttpStatusCode.OK) { Content = pushStreamContent };
效果很好!但是对于大的下载请求,这会耗尽我的记忆。我需要找到一种方法将流放入无缓冲的 zip 存档中。有人可以帮帮我吗?!
【问题讨论】:
-
看起来还有另一个问题Creating Zip file from stream and downloading it 涵盖了此类问题。最佳答案应该可以帮助您解决问题。
标签: c# asp.net-web-api