В моем контроллере выполняется следующее действие
public ActionResult DownloadExcel()
{
//create and populate Excel file here
C1XLBook testBook = new C1XLBook();
//populate it here
MemoryStream ms = new MemoryStream();
testBook.Save(ms, FileFormat.Biff8);
return File(ms, "application/ms-excel", "test-file.xls");
}
При открытии файла я получаю сообщение Excel о том, что файл не соответствует расширению и файл открывается поврежденным.
Если я сохраню файл на жестком диске и верну его оттуда, все в порядке:
return base.File(@"C:\LOGS\test-file.xls", "application/ms-excel", "test-excel.xls");
Сначала я подумал, что функция «Сохранить» портит его при сохранении в MemoryStream, поэтому я сохранил и повторно загрузил его обратно. и это было нормально, передавая обратно пользователю - при сохранении на жестком диске и возвращении оттуда, а не из MemoryStream
. Есть идеи? Я не очень люблю сохранять файл на жестком диске ... кроме того, я должен иметь возможность сохранить его в MemoryStream и вернуть оттуда?
У меня есть подозрение, что, возможно, не следует использовать MemoryStream для возврата файлов в MVC, поскольку каждый запрос изолирован?