2

私はサーブレットを介してファイル ダウンロード機能を実装していますが、Files.probeContentType成功せずに使用しようとしましたが、正しい MIME タイプを取得していないようですapplication/octet-stream。私のテストでは、その設定はtar, gif, gz, mp4, xml, json、ファイルが正しくダウンロードされ、それぞれのアプリで開くことができるように、.

最初の質問です。誰かが私が間違っていること、probeContentTypeまたは MIME タイプを判断するためのより良い方法を教えてくれれば、それが最も高く評価されます。Scala の数行のコードを次に示します。

val is = new FileInputStream(file)
val mt = Files.probeContentType(file.toPath)
val mimetype = if (mt == null) "application/octet-stream" else mt

それにもかかわらず、HTTP 応答を常に に設定しても問題ありcontent-typeませ application/octet-streamんか? Chrome と Firefox でのみテストしました。

更新誰かが疑問に思っている場合に備えて、私はこの投稿のおかげでMimeUtilを使用することになりました。これまでのところ、私が投げたすべてのファイルタイプでうまく機能します。これがScalaコードのスニペットです

import eu.medsea.mimeutil.MimeUtil
val file = new File("path-to-your-file")
MimeUtil.registerMimeDetector("eu.medsea.mimeutil.detector.MagicMimeMimeDetector")
val mt = MimeUtil.getMimeTypes(file).toString

これは、いくつかの MIME タイプ検出ライブラリの役立つコード スニペットを含む投稿です。

4

0 に答える 0