C# MVC веб-сайт PDF-файл хранится в байтовом массиве, отображается в браузере
Я получаю byte[]
который содержит PDF.
Мне нужно взять byte[]
и отобразить PDF в браузере. Я нашел похожие вопросы, как это - Как вернуть PDF в браузер в MVC?, Но он открывает PDF в средстве просмотра PDF, также я получаю сообщение об ошибке, в котором говорится, что файл не может быть открыт, потому что он - "не поддерживается тип файла или потому что файл был поврежден".
Как я могу открыть PDF в браузере? Мой код до сих пор выглядит следующим образом -
public ActionResult DisplayPDF()
{
byte[] byteArray = GetPdfFromDB();
Stream stream = new MemoryStream(byteArray);
stream.Flush();
stream.Position = 0;
return File(stream, "application/pdf", "Labels.pdf");
}
1 ответ
Если у вас уже есть байт [], вы должны просто использовать FileContentResult
, который "отправляет содержимое двоичного файла в ответ". Использовать только FileStreamResult
когда у вас открыт поток.
public ActionResult DisplayPDF()
{
byte[] byteArray = GetPdfFromDB();
return new FileContentResult(byteArray, "application/pdf");
}
Вы можете показать байтовый массив PDF прямо в браузере, просто используя MemoryStream
вместо Stream
а также FileStreamResult
вместо File
:
public ActionResult DisplayPDF()
{
byte[] byteArray = GetPdfFromDB();
MemoryStream pdfStream = new MemoryStream();
pdfStream.Write(byteArray , 0,byteArray .Length);
pdfStream.Position = 0;
return new FileStreamResult(pdfStream, "application/pdf");
}