Установить тип контента для статических ресурсов

Я пытался найти способ установить тип контента для статических ресурсов в моем веб-приложении, которые предоставляются в виде загружаемых ссылок. Например, у меня есть файл.CSV, и когда я предоставляю эту ссылку в браузере, при щелчке она открывается в новом окне. Что я действительно хочу, так это 1) загрузить автоматически или 2) браузер, чтобы вызвать диалог "Открыть или Сохранить как". Я использую Ice faces для рендеринга ссылки, но это не имеет значения, я могу использовать обычный HTML с Javascript или JQuery. Вот мой код

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

Обратите внимание, что я не передаю содержимое файла через http-ответ. Если бы я сделал это, я мог бы легко установить тип контента и теги размещения контента для достижения того, что я хотел. Что я действительно хочу, так это способ установки этих заголовков при рендеринге статических ресурсов как прямых ссылок.

1 ответ

Решение

Просто укажите 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>

Обратите внимание, что в контейнере сервлетов по умолчанию уже есть целый список отображений MIME. web.xmlсреди прочих CSV. Только, например, документы OpenXML Office (docx, xlsx и т. Д.) И форматы изображений HTML5 (SVG) могут быть зарегистрированы вручную.

Другие вопросы по тегам