私はサーブレットを介してファイル ダウンロード機能を実装していますが、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 タイプ検出ライブラリの役立つコード スニペットを含む投稿です。