【发布时间】:2018-06-05 04:48:00
【问题描述】:
如何在IHttpActionResult action, Web API controller中实现如下功能?
我需要将HttpResponseBase 修改为其他内容吗?
public void ZipFilesToResponse(HttpResponseBase response, IEnumerable<Asset> files, string zipFileName)
{
using (var zipOutputStream = new ZipOutputStream(response.OutputStream))
{
zipOutputStream.SetLevel(0); // 0 - store only to 9 - means best compression
response.BufferOutput = false;
response.AddHeader("Content-Disposition", "attachment; filename=" + zipFileName);
response.ContentType = "application/octet-stream";
foreach (var file in files)
{
var entry = new ZipEntry(file.FilenameSlug())
{
DateTime = DateTime.Now,
Size = file.Filesize
};
zipOutputStream.PutNextEntry(entry);
storageService.ReadToStream(file, zipOutputStream);
response.Flush();
if (!response.IsClientConnected)
{
break;
}
}
zipOutputStream.Finish();
zipOutputStream.Close();
}
response.End();
}
在这里使用:
[HttpPost]
[Route("DownloadFiles/{company_id}")]
public IHttpActionResult DownloadFiles(Int64 company_id, TasksFilterModel searchModel)
{
var files = .....;
ZipFilesToResponse(_______,files,"download.zip");
return ????
}
【问题讨论】:
-
我没有完整的答案,但阅读以下内容可能会有所帮助:stackoverflow.com/a/47397666/1220550
标签: c# asp.net-web-api2