Открыть PDF-результат на вкладке браузера с помощью MVC 3 - PullRequest
13 голосов
/ 29 мая 2011

Я использую 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-файл открывался на вкладке?

Ответы [ 3 ]

22 голосов
/ 30 мая 2011

Я получил ответ по ссылкам справа :

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 в заголовок, изатем используйте Файл с 3 параметрами, в результате вы получите два заголовка Content-Disposition.Firefox 8 скажет, что ответ поврежден, если заголовок ответа выглядит следующим образом.

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

Response.AppendHeader("Content-Disposition", "inline; filename=something.pdf")
Return File(output, "application/pdf")
1 голос
/ 29 мая 2011

Это настраивается в вашем браузере.Вы можете изменить настройки, чтобы загрузить / открыть в браузере или открыть в соответствующем приложении в разделе «Инструменты-> Параметры-> Приложения» для всех типов файлов.Это не имеет ничего общего с вашим кодом.

0 голосов
/ 29 мая 2011

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

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