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

Обработчик PDF: имя файла содержимого

Я выводил PDF файл в веб-браузере (IE8) HttpContext.Response.writefile(fileName), и он отлично работает. Когда я попытаюсь сохранить файл, он даст мне имя обработчика ashx по умолчанию. Я хотел бы фактически передать настоящее имя.

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

context.Response.AddHeader("content-disposition", "attachment; filename=" + fileInfo.Name);

И он работает, но я не хочу, чтобы пользователю приходилось выбирать между open и save, я хочу, чтобы файл нормально открывался, и если пользователь решает сохранить его, тогда диалог даст ему/ей имя файла по умолчанию.

Я также попробовал:

context.Response.AddHeader("content-disposition", "inline; filename=" + fileInfo.Name);

Или просто, как Скотт Гензельман предложил в своем блоге.

context.Response.AddHeader("content-disposition", "filename=" + fileInfo.Name);

Никто из них не работает для меня. Кто-нибудь есть идеи?

4b9b3361

Ответ 2

В случае INLINE кажется, что Internet explorer использует последний параметр в URL для создания имени файла. Например, если ваш url http://doc.com/131231231 IE предложит вам сохранить файл как 131231231.pdf Если вам нужно имя файла, например foo_131231231.pdf вы можете взломать IE, используя этот URL: http://doc.com/foo_131231231 Возможно, вам придется немного изменить свое приложение, чтобы ожидать такой уродливый параметр, но в конце вашего приложения будет работать так, как вы ожидаете.

Ответ 3

Я также столкнулся с этой проблемой. То, что помогло мне, было также установить для contenttype значение application/pdf (вместо application/x-pdf, который устарел)

response.setContentType("application/pdf");
response.setHeader("Content-disposition", "inline; filename=\"Report.pdf\"");