C# 流压缩文件MVC.NET启动流媒体
我正在尝试创建一个方法,当用户下载zip文件时,该方法会不断地对其进行流式处理(这样就不会浪费流式处理) 我添加了一个thread.sleep来模拟延迟C# 流压缩文件MVC.NET启动流媒体,c#,asp.net-mvc,C#,Asp.net Mvc,我正在尝试创建一个方法,当用户下载zip文件时,该方法会不断地对其进行流式处理(这样就不会浪费流式处理) 我添加了一个thread.sleep来模拟延迟 public override void ExecuteResult(ControllerContext context) { HttpResponseBase response = context.HttpContext.Response; response.Clear(); response.ClearConten
public override void ExecuteResult(ControllerContext context) {
HttpResponseBase response = context.HttpContext.Response;
response.Clear();
response.ClearContent();
response.ClearHeaders();
response.Cookies.Clear();
response.ContentType = ContentType;
response.ContentEncoding = Encoding.Default;
response.AddHeader("Content-Type", ContentType);
context.HttpContext.Response.AddHeader("Content-Disposition",
String.Format("attachment; filename={0}",
this.DownloadName));
int ind = 0;
using (ZipOutputStream zipOStream =
new ZipOutputStream(context.HttpContext.Response.OutputStream))
{
foreach (var file in FilesToZip)
{
ZipEntry entry = new ZipEntry(FilesToZipNames[ind++]);
zipOStream.PutNextEntry(entry);
Thread.Sleep(1000);
zipOStream.Write(file, 0, file.Length);
zipOStream.Flush();
}
zipOStream.Finish();
}
response.OutputStream.Flush();
}
似乎在所有文件压缩之前,zip不会开始流式处理。有没有一种方法可以持续不断地流呢?可能使用另一个库?我认为您可能需要刷新outputstream,而不是zipostream来查看http的任何输出。因此,在这种情况下,response.OutputStream.Flush()将出现在循环中。但不确定它是否真的能解决您的问题。假设zip格式偏向于流式传输,您的问题是默认情况下您的响应会被缓冲。如果设置为false,则应立即开始流式处理