c# asp.net-mvc dotnetzip

c# - ¿Es posible utilizar un MemoryStream con FileStreamResult?



asp.net-mvc dotnetzip (1)

Estoy usando DotNetZip para crear un archivo zip y pasarlo a un FileResult. En la depuración, puedo verificar que MemoryStream contiene un archivo, pero cuando lo ejecuto a través de FileStreamResult, devuelve 0bytes:

public FileResult GetZipFiles(int documentId) { var file = fileRepository.Get(documentId); var zip = new ZipFile(); var stream = new MemoryStream(); var filePath = Path.Combine(UploadsFolder, Path.GetFileName(file.Id)); zip.AddFile(filePath); zip.Save(stream); var result = new FileStreamResult(stream, "application/zip") { FileDownloadName = "hey.zip" }; return result; }

De nuevo, puedo verificar que la secuencia no esté vacía, pero esto siempre devolverá el archivo hey.zip como 0bytes. Debo estar usando MemoryStream mal aquí? ¿O FileStreamResult hace algo que no espero que haga? He usado FileStreamResult antes, pero no con MemoryStream .


¿Has intentado configurar stream.Position = 0; Después de hacer el zip.Save(stream) ?

Además, puede confirmar que los datos se están escribiendo en la secuencia. Compruebe stream.Length después de zip.Save . Si stream.Length es cero, entonces no se está escribiendo nada.