2009-06-02 2 views
5

Как мне (в моем контроллере) отправить PDF-документ, который открывается в браузере. Я пробовал это, но он загружает только файл (и то есть, и firefox) без запроса.Открыть pdf в плагине браузера

public ActionResult GetIt() 
{ 
    var filename = @"C:\path\to\pdf\test.pdf"; 
    // Edit start 
    ControllerContext.HttpContext.Response.AddHeader("Content-Disposition", String.Format("inline;filename=\"{0}\"", "test.pdf")); 
    // Edit stop 
    return File(filename, "application/pdf", Server.HtmlEncode(filename)); 
} 

После добавления редактирования выше он работает должным образом, спасибо.

ответ

6

Необходимо установить заголовок HTTP-содержимого Content inline, чтобы указать браузеру, что он должен попытаться использовать плагин PDF, если он доступен.

Нечто вроде: Содержание-Планировка: inline; filename = test.pdf

Обратите внимание, что вы не можете принудительно использовать плагин, это решение, принятое браузером.

1

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

+0

Нет, мой клиент работает так, как ожидалось, на других веб-сайтах. Иногда он загружается, иногда он открывается в adobe plug-in. Вероятно, это связано с отправленными заголовками. – Nifle

+0

Да, это заголовки - см. Комментарии ниже. –

2

Это (в дополнение к другим заголовкам) делает трюк для меня в простом .net веб-приложение:

Response.AddHeader ("Content-Disposition", String.Format ("инлайн, имя файла =" "{0}" "", FileName))

Я не знаком с MVC, но, надеюсь, это помогает.

+2

Я думаю, вам нужно установить расположение в строку, а не вложение. Использование привязки заставляет его сохранять файл на диск. –

+0

Да, извините, быстро скопируйте/вставьте. Это откроет его в новом окне, это попытается открыть его в том же окне: Response.AddHeader ("Content-Disposition", String.Format ("inline; filename =" "{0}" "", FileName)) – ScottE

Смежные вопросы