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");
}
Другие вопросы по тегам