簡體   English   中英

從MemoryStream發送zip文件時,HTTP響應無效

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM