Подтвердить что ты не робот

Открыть PDF-результат на вкладке браузера с помощью MVC 3

Я использую ASP.NET MVC 3. У меня есть действие контроллера, которое возвращает файл PDF следующим образом:

Public Class ReportController
    ...
    Function Generate(id As Integer) As ActionResult
        ...
        Return File(output, "application/pdf", "something.pdf")
        ' "output" is a memory stream
    End Function

Код работает, но Firefox не отображает результат на вкладке, результат либо загружается, либо открывается с помощью Adobe Reader.

Я знаю, что Firefox может отображать PDF на вкладке, потому что я могу просто загрузить какой-нибудь PDF файл, щелкнуть ссылку, и PDF откроется на вкладке.

Как настроить действие, чтобы PDF открылся на вкладке?

4b9b3361

Ответ 1

Я получил ответ из связанных ссылок справа:

Response.AppendHeader("Content-Disposition", "inline")
Return File(output, "application/pdf")

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

Response.AppendHeader("Content-Disposition", "inline; filename=something.pdf")
Return File(output, "application/pdf", "something.pdf")

Итак, я даже не удосужился дать подсказку имени файла.

ИЗМЕНИТЬ

ASP.NET MVC 3 Файл с 3 параметрами:

Return File(output, "application/pdf", "something.pdf")

добавит Content-Disposition: attachment; filename="something.pdf" в заголовок ответа, даже если в заголовке ответа уже есть Content-Disposition.

Итак, если вы вручную добавили Content-Disposition в заголовок, а затем используете File с 3 параметрами, вы получите два заголовка Content-Disposition. Firefox 8 скажет, что ответ поврежден, если заголовок ответа выглядит следующим образом.

Итак, лучший способ сделать это теперь - добавить Content-Disposition вручную для "inline", а затем использовать File с двумя параметрами:

Response.AppendHeader("Content-Disposition", "inline; filename=something.pdf")
Return File(output, "application/pdf")

Ответ 2

Это настраивается в вашем браузере. Вы можете изменить настройки для загрузки/открытия в браузере или открыть в соответствующем приложении в разделе tools- > options- > applications для всех типов файлов. Thi не имеет ничего общего с вашим кодом.

Ответ 3

Попробуйте напрямую подключиться к PDF файлу.... Если он открывается на вкладке, попробуйте изменить маршрут до конца .pdf