2

我一直在尝试找到一种方法来为我的 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 响应流式传输文件内容。如果我这样做了,我可以轻松设置内容类型和内容处置标签来实现我想要的。我真正想要的是一种设置这些标头的方法,同时将静态资源呈现为直接链接。

4

1 回答 1

3

只需提供一个带有有效扩展名的 URL,并在必要时通过<mime-mapping>in注册具有内容类型的扩展名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) 可能需要手动注册。

于 2013-04-29T12:22:58.370 回答