【问题标题】:Set content type for static resources设置静态资源的内容类型
【发布时间】:2013-04-22 23:46:19
【问题描述】:

我一直在尝试找到一种方法来为我的 Web 应用程序中的静态资源设置内容类型,这些资源以可下载链接的形式提供。例如,我有一个 .CSV 文件,当我在浏览器上提供此链接时,单击它会在新窗口中打开。我真正想要的是1)自动下载或2)浏览器抛出“打开或另存为”对话框。我正在使用 Icefaces 来呈现链接,但这没关系,我可以将纯 html 与 javascript 或 jquery 一起使用。这是我的代码。

<ice:outputLink id="location" value="#{bean.downloadLink}" type="application/x-download" target="_blank">
        <ice:outputText value="Download"/>
</ice:outputLink>

请注意,我不是通过 http 响应流式传输文件内容。如果我这样做了,我可以轻松设置内容类型和内容处置标签来实现我想要的。我真正想要的是一种设置这些标头的方法,同时将静态资源呈现为直接链接。

【问题讨论】:

    标签: javascript html servlets jsf-2 icefaces-2


    【解决方案1】:

    只需提供一个带有有效扩展名的 URL,并在必要时使用 &lt;mime-mapping&gt; 的内容类型在 web.xml 中注册扩展名。

    例如以下链接最终由 JSF 生成,无论您使用何种组件:

    <a href="file.csv">Download</a>
    

    <mime-mapping>
        <extension>csv</extension>
        <mime-type>text/csv</mime-type>
    </mime-mapping>
    

    请注意,默认情况下,servlet 容器在其自己的web.xml 和其他 CSV 文件中已经有一个完整的 mime 映射列表。仅例如 OpenXML Office 文档(docx、xlsx 等)和 HTML5 图像格式 (SVG) 可能需要手动注册。

    【讨论】:

    • 完美!这就是我要找的。谢谢 BalusC :)
    • 自上周五以来我一直在寻找这个。谢谢,@BalusC!
    猜你喜欢
    • 2018-04-23
    • 2018-10-07
    • 2017-07-15
    • 2015-01-22
    • 2015-01-11
    • 2011-05-21
    • 1970-01-01
    • 2013-01-30
    • 1970-01-01
    相关资源
    最近更新 更多