我正在通过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 post提供了post。到目前为止,它对我抛出的所有文件类型都很有效。这是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
这是一个{{3}},其中包含一些MIME类型检测库的有用代码段。