3

伙计们,我正在使用 inputStream 进行文件下载。现在我想将 fileName 和 fileType 传递给 DefaultStreamedContent 。现在我如何使用 inputStream 找到 fileName 和 FileType 。

InputStream inputStream = new BufferedInputStream(new FileInputStream(filePath));
fileDownload = new DefaultStreamedContent(inputStream,**fileType,fileName**);
4

1 回答 1

5

无法从中提取此信息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>
于 2012-11-05T10:57:29.860 回答