2

我正在通过 servlet 实现文件下载功能并尝试使用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