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()基づいて決定されます。servletcontainer には、すでにそれ自体で定義された全体の束があります (Tomcat では、 check ) が、次のように XLSX タイプの場合のように、webapp 自体でそれらを (再) 定義することで、拡張およびオーバーライドできます。<mime-mapping>web.xml/conf/web.xml/WEB-INF/web.xml

<mime-mapping>
    <extension>xlsx</extension>
    <mime-type>application/vnd.openxmlformats-officedocument.spreadsheetml.sheet</mime-type>
</mime-mapping>
于 2012-11-05T10:57:29.860 に答える