我有一个通过POST接受文件的JEE6应用程序。我可以执行服务器端基本测试,以确保文件扩展名是正确的,但有没有办法检查文件内容,以确保我不处理它,除非我很高兴它是一个有效的文件,即避免有人只是重命名文件扩展名
答案 0 :(得分:1)
如果这些是基于文本的文件,请考虑使用Apache Tika的DefaultDetector类。
这将采用InputStream
和Tika Metadata
类并设置Content-Type元数据字段,这是一个标准的mime类型(例如 - text / html,application / xml等)。根据预期的mime类型检查输出,以验证文件是否“有效”。
请注意,这将消耗您的输入流,因此如果您想稍后使用该文件,请务必制作副本。
答案 1 :(得分:1)
如果你知道文件的MIME type,可以尝试将其与Files.probeContentType(tempFile)
(文档here)返回的值进行比较。
MIME类型可以包含任意数量的可选参数(例如“text / plain; charset = UTF-8”),因此您可能希望使用MimeType.match方法进行比较,而不仅仅是比较字符串。< / p>