问题似乎是“filename=xxx”实际上是用于“附件”配置的,并且并非所有浏览器 PDF 插件都将其识别为指定内联“另存为”的机制,正如您所发现的。
让它们全部使用您首选的文件名的另一种方法是使用 Web 服务器重写规则来操作 URL。作为一个简单的示例,您将拥有用于生成 pdf 并内联提供它们的脚本:pdf.cfm
<cfheader name="Content-Disposition" value="inline">
<cfdocument format="PDF" mimetype="application/pdf">Test</cfdocument>
然后创建一个与表单中的 URL 匹配的重写规则/pdf/我的文件名并将它们传递给pdf.cfm。在 IIS7 上,这可能是:
<rule name="Inline PDF SaveAs" stopProcessing="true">
<match url="^/pdf/[\w-]+$" ignoreCase="true" />
<action type="Rewrite" url="/pdf.cfm" appendQueryString="false" />
</rule>
这将匹配仅包含字母数字、下划线和连字符的文件名。您不想允许空格或无效的文件名字符。
当您访问/pdf/我的报告PDF将由插件内联显示,当您保存它时,默认文件名将是我的报告.pdf.
如果您使用的框架支持搜索引擎安全 URL 或“路由”,您可以执行相同的操作,而无需重写 Web 服务器。
更新:事实上,您不需要使用 URL 重写:只需在 CF 脚本 URL 中附加一个正斜杠,然后添加所需的文件名,例如
/pdf.cfm/myreport
该插件将使用最后一个斜杠后面的任何内容作为“另存为...”名称。