Как задать имя файла при потоковой передаче PDF в браузере?
Не уверен, как именно сформулировать этот вопрос ... так что правки приветствуются! В любом случае... здесь идет.
в настоящее время я использую Crystal Reports для создания PDF-файлов и просто передаю вывод пользователю. Мой код выглядит следующим образом:
System.IO.MemoryStream stream = new System.IO.MemoryStream();
stream = (System.IO.MemoryStream)this.Report.ExportToStream(CrystalDecisions.Shared.ExportFormatType.PortableDocFormat);
this.Response.Clear();
this.Response.Buffer = true;
this.Response.ContentType = "application/pdf";
this.Response.BinaryWrite(stream.ToArray());
this.Response.End();
после запуска этого кода он передает Pdf в браузер, открывая Acrobat Reader. Отлично работает!
моя проблема заключается в том, когда пользователь пытается сохранить файл по умолчанию для фактического имени файла ... в этом случае по умолчанию используется CrystalReportPage.документ pdf. Я могу это как-нибудь настроить? Если да, то как?
любая помощь будет оценили.
2 ответов
обычно, через заголовок content-disposition-т. е.
Content-Disposition: inline; filename=foo.pdf
поэтому просто используйте заголовки.Добавьте, или AddHeader, или что бы это ни было, с помощью:
ответ.Заголовки.Добавить ("Content-Disposition", " inline; filename=foo.pdf");
(inline - "показать в браузере", вложение - "сохранить как файл")
System.IO.MemoryStream stream = new System.IO.MemoryStream();
stream = (System.IO.MemoryStream)this.Report.ExportToStream(CrystalDecisions.Shared.ExportFormatType.PortableDocFormat);
this.Response.Clear();
this.Response.Buffer = true;
this.Response.ContentType = "application/pdf";
this.Response.AddHeader("Content-Disposition", "attachment; filename=\""+FILENAME+"\"");
this.Response.BinaryWrite(stream.ToArray());
this.Response.End();