javascript - 设置静态资源的内容类型

标签 javascript html servlets jsf-2 icefaces-2

我一直在尝试找到一种在我的网络应用程序中设置静态资源内容类型的方法,这些资源以可下载链接的形式提供。例如,我有一个 .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 响应流式传输文件内容。如果我这样做,我可以轻松设置内容类型和内容处置标签来实现我想要的。我真正想要的是一种在将静态资源渲染为直接链接的同时设置这些 header 的方法。

最佳答案

只需提供一个具有有效扩展名的 URL,并在必要时通过 <mime-mapping> 注册具有内容类型的扩展名。在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 中拥有完整的 mime 映射列表。等 CSV。仅例如 OpenXML Office 文档(docx、xlsx 等)和 HTML5 图像格式 (SVG) 可能需要手动注册。

关于javascript - 设置静态资源的内容类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16276465/

相关文章:

javascript - 如何并行 api 调用并保持列表中响应的顺序以供 ui 呈现(RxJS Observables)

javascript - 如何从 JavaScript 中查询数据库的 for 循环返回值?

javascript - JS : Create a method to return an array that does not include the index values from the array passed to my method

HTML/CSS 多种自定义字体

jquery - Firefox 中的 javaScript 错误 - 无法使用事件类更新菜单项

jquery - 处理没有提交按钮的复选框表单?

asp.net - JavaScript window.parent 问题

java - 无法查询链接电影数据库的本地版本

java - 如何从另一个 Servlet 将响应发送回 Servlet

java - servlets:显示项目目录外的图像