Установить тип контента для статических ресурсов
Я пытался найти способ установить тип контента для статических ресурсов в моем веб-приложении, которые предоставляются в виде загружаемых ссылок. Например, у меня есть файл.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) могут быть зарегистрированы вручную.