Как заставить браузер открывать PDF-файл в новой вкладке, а не просто загружать его? - PullRequest
0 голосов
/ 06 октября 2018

У меня есть кнопка «Загрузить» и кнопка «Просмотр».Файл загружается через функцию контроллера MVC, возвращая FileResult.

Функция контроллера выглядит следующим образом:

    public FileResult DownloadStatement(Guid statementID) {
        StatementFileModel statementFile = BL.GetStatementByID(statementID);
        byte[] fileBytes = statementFile.FileData;
        Response.ContentType = "application/pdf";
        Response.AddHeader("Content-Disposition", "attachment;filename=" + statementFile.FileName);
        Response.BinaryWrite(fileBytes);
        return File(fileBytes, "application/pdf");
    }

Следующее прекрасно работает для немедленной загрузки PDF без открытия его в браузере:

window.location.href = "/DownloadStatement?statementID=" + statementID;

У меня проблемы с кнопкой View.Я попробовал следующее, но он также просто загружает PDF, не открывая его в браузере:

window.open("/DownloadStatement?statementID=" + statementID, '_blank', 'fullscreen=yes');

Ответы [ 2 ]

0 голосов
/ 07 октября 2018

Используйте
header("Content-Disposition", "attachment; filename=" + statementFile.FileName) для загрузки;
используйте
header("Content-Disposition", "inline; filename=" + statementFile.FileName);, чтобы открыть его в браузере:

0 голосов
/ 06 октября 2018

Заголовок Content-Disposition: attachment указывает браузеру загрузить файл.Не отправляйте это значение заголовка (attachment) при нажатии кнопки «Просмотр», и браузер должен отображать PDF-файл, а не загружать его.

Пропуск заголовка полностью или отправка Content-Disposition: inline,должно хватить.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...