web-dev-qa-db-ja.com

ファイルのダウンロード用にJava)でコンテンツタイプを設定する

私のアプリケーションでは、ファイルのダウンロード機能を提供するのが好きです。ファイルタイプをresponse.setContentTypeに設定しました。ほぼすべての既知のファイルタイプのコンテンツタイプを設定するにはどうすればよいですか?簡単な方法はありますか?または、今のように手動で設定する必要があります。これを以下に示します。

if (pictureName.indexOf("jpg") > 0) {
   res.setContentType("image/jpg");
} else if (pictureName.indexOf("gif") > 0) {
   res.setContentType("image/gif");
} else if (pictureName.indexOf("pdf") > 0) {
   res.setContentType("application/pdf");
   res.setHeader("Content-Disposition", "inline; filename=\"" + pictureName + "\"");
} else if (pictureName.indexOf("html") > 0) {
   res.setContentType("text/html");
} else if (pictureName.indexOf("Zip") > 0) {
   res.setContentType("application/Zip");
   res.setHeader("Content-Disposition", "attachment; filename=\"" + pictureName + "\"");
}

ありがとう:)

10
coder247

javax.activation.MimetypesFileTypeMap (Java6の一部として提供され、以前のバージョン用にダウンロードできます)をご覧ください。指定されたファイル名のmimeタイプを返すメソッドがあります。

自分で使ってみたことはありませんが、mimeタイプのリストを提供する必要がある可能性があります。しかし、一見の価値があります。

10
skaffman

サーブレットを使用するときに@skaffmanがリストしたものの実用的な例を示すには:

        String fileName = "c:/temp/URL.txt";
        MimetypesFileTypeMap mimetypesFileTypeMap=new MimetypesFileTypeMap();
        response.setContentType(mimetypesFileTypeMap.getContentType(fileName));
        response.getOutputStream().write(Files.readAllBytes(Paths.get(fileName)));
1
Doug

URLConnection.getFileNameMap().getContentTypeFor(string) txt、pdf、aviで動作します。 doc、odt、mp3で失敗します...

0
Ray Hulha