gpt4 book ai didi

coldfusion - 内容处置在 IE 9 和 Firefox 13 中被忽略

转载 作者:行者123 更新时间:2023-12-04 18:47:41 24 4
gpt4 key购买 nike

我正在尝试动态创建一个内联 PDF,当用户选择保存它时,会提示我的自定义文件名。根据 the documentation , saveasname属性应该做我想做的。

(format="PDF" only) The filename that appears in the SaveAs dialog when a user saves a PDF file written to the browser.



但是,IE 9 和 Firefox 13.0.1 中出现的情况是 SaveAs 对话框中显示的文件名与我的 CF 模板相同,但带有 PDF 扩展名。 (换句话说,我的代码在 makepdf.cfm 中,而 SaveAs 提示我保存 makepdf.pdf 。)然而,在 Chrome 中,它工作得很好。 (全部在 Windows 7 上。)

这是我创建PDF的代码:
<cfdocument format="pdf" bookmark="true" saveasname="MyReport.pdf">

如果我明确声明内容处置和内容类型,像这样
<cfheader name="Content-Disposition" value="inline; filename=MyReport.pdf">
<cfcontent type="application/x-pdf">
<cfdocument format="pdf" bookmark="true" saveasname="MyReport.pdf">
  • Chrome 告诉我“Content-Disposition”已声明两次
  • Firefox 告诉我 PDF 文件已损坏
  • IE 只是忽略它(仍然没有显示正确的文件名)

  • 如果我只依靠标题
    <cfheader name="Content-Disposition" value="inline; filename=MyReport.pdf">
    <cfcontent type="application/x-pdf">
    <cfdocument format="pdf" bookmark="true">

    我得到与第一个代码片段相同的行为。

    我知道如何让浏览器提示下载而不是显示内联,然后一切都按预期工作,但这不是所需的行为。

    我需要在文件名中使用时间和日期,而最终用户不够精明,无法避免覆盖他们的文件(如果他们选择保存它们)。

    有什么我遗漏的东西会让 IE 和 Firefox 做他们应该做的事情吗?还有哪些浏览器会这样做?移动Safari?

    最佳答案

    问题似乎是“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/myreport PDF 将由插件内联显示,当您保存它时,默认文件名将为 myreport.pdf .

    如果您使用的框架支持搜索引擎安全 URL 或“路由”,则无需重写 Web 服务器即可执行相同操作。

    更新:实际上,您不需要使用 URL 重写:只需将正斜杠和所需的文件名附加到 CF 脚本 URL,例如

    /pdf.cfm/myreport

    该插件将使用最后一个斜杠之后的任何内容作为“另存为...”名称。

    关于coldfusion - 内容处置在 IE 9 和 Firefox 13 中被忽略,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11547469/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com