0

我有一个通过 POST 接受文件的 JEE6 应用程序。我可以执行服务器端基本测试以确保文件扩展名正确,但有没有办法检查文件内容以确保我不处理它,除非我很高兴它是一个有效文件,即避免有人只是重命名文件扩展名

4

2 回答 2

1

如果这些是基于文本的文件,请考虑使用 Apache Tika 的DefaultDetector类。

这将采用一个InputStream和 TikaMetadata类并设置 Content-Type 元数据字段,这是一个标准的 mime 类型(例如 - text/html、application/xml 等)。根据您预期的 mime 类型检查输出以验证文件是否“有效”。

但请注意,这会消耗您的输入流,因此如果您想稍后使用该文件,请务必制作一份副本。

于 2013-07-25T13:15:09.280 回答
1

如果您知道文件的MIME 类型,可以尝试将其与(此处Files.probeContentType(tempFile)的文档)返回的值进行比较。

MIME 类型可以有任意数量的可选参数(例如“text/plain; charset=UTF-8”),因此您可能希望使用MimeType.match方法进行比较,而不仅仅是比较字符串。

于 2013-07-25T15:41:39.857 回答