无法从中提取此信息InputStream
。这些信息只能基于filePath
(并且几乎没有帮助就java.io.File
可以轻松获取文件名)来提取。
File file = new File(filePath);
InputStream inputStream = new FileInputStream(file);
String fileName = file.getName();
String fileType = FacesContext.getCurrentInstance().getEexternalContext().getMimeType(fileName);
fileDownload = new DefaultStreamedContent(inputStream, fileType, fileName);
ExternalContext#getMimeType()
是根据 中的条目<mime-mapping>
确定的web.xml
。servletcontainer 本身已经定义了一大堆(在 Tomcat 中,检查/conf/web.xml
),但是您可以通过在 webapp 自己的(重新)定义它们来扩展和覆盖它,/WEB-INF/web.xml
如下所示的 XLSX 类型:
<mime-mapping>
<extension>xlsx</extension>
<mime-type>application/vnd.openxmlformats-officedocument.spreadsheetml.sheet</mime-type>
</mime-mapping>