内联文件名内容处理和注入动态文件名以解决保存操作的解决方案

时间:2011-08-29 03:33:55

标签: .net pdf httphandler content-disposition

基本上我将pdf从内存流式传输到用户的浏览器。我想允许系统用户能够在adobe(在浏览器中)中点击保存,并且文件名预先填充了动态值(例如客户的姓氏)。

到目前为止,我已经阅读了一些关于此问题的内容,似乎设置内联文件名的内容处理标头未正确实现。

我已经读过adobe从生成pdf的页面中获取文件名。即如果页面名称是pdfviewer.aspx,则pdf文件名的预填充值为pdfviewer.pdf。

我正在寻找一个解决方案。我最初的想法是一个http处理程序,它将生成并推出pdf,并具有这样的web配置:

 <add verb="*" path="*.ashx" type="Logic.PDFHandler" />

这种方式当我动态设置链接为“lastname.ashx”时,它应该运行PDFHandler中的代码,而url将是“... \ lastname.ashx”之类的东西。我似乎能够在概念证明中使用它(用简单的repsonse.write代替pdf的生成(“hello world”)),但我只是想知道,如果有更好的解决方法?

注意:概念证明仅适用于IE,我很高兴,因为它是此Intranet应用程序的目标浏览器。

2 个答案:

答案 0 :(得分:0)

ASP.NET路由将允许您将/GeneratePDF/{id}/{lastname}.pdf或其他东西路由到您的处理程序。

答案 1 :(得分:0)

使浏览器要求您使用给定名称保存PDF的方法如下:

// code runs on ASP.NET server
Response.Clear();
Response.AddHeader("Content-Disposition", string.Format("attachment; filename={0}".
   fileName);
Response.ContentType = "application/pdf";
// stream PDF to response object