[英]Invalid HTTP response when sending a zip file from a MemoryStream
我試圖通過從文件流中讀取的多個其他zip文件在內存中創建一個zip文件。 看來它能夠正確讀取文件並創建一個zip文件。 但是,在創建響應時,所有內容標頭都會放入invalidHeaders
。 這將導致下載永遠不會發生,而是加載了錯誤的響應頁面。
using (var memoryStream = new MemoryStream())
{
// Gather all zips into a single zip file
using (var archive = new ZipArchive(memoryStream, ZipArchiveMode.Create, true))
{
foreach(var zipFile in zipFiles)
{
archive.CreateEntryFromFile(zipFile.ZipFilePath, Path.GetFileName(zipFile.ZipFilePath));
}
}
// Now we have our memory stream with our zip
HttpResponseMessage message = new HttpResponseMessage(HttpStatusCode.OK);
message.Content = new StreamContent(memoryStream);
message.Content.Headers.ContentDisposition = new ContentDispositionHeaderValue("attachment");
message.Content.Headers.ContentDisposition.FileName = "AllZIPFiles.zip";
message.Content.Headers.ContentType = new MediaTypeHeaderValue("application/zip");
message.Content.Headers.ContentLength = memoryStream.Length;
// Content headers placed into invalidHeaders?
return ResponseMessage(message);
}
ZipArchive
完成工作后,流的位置將在流的末尾。
在發送此類流作為響應之前,請確保將流位置設置為0,如下所示:
memoryStream.Position = 0;
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.