如何使用inputStream获取文件名和文件类型?

时间:2012-11-05 10:47:53

标签: spring jsf primefaces

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

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

1 个答案:

答案 0 :(得分:4)

无法从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>