Spring MVC上传文件 - 内容类型如何确定?

时间:2011-08-24 17:51:57

标签: spring spring-mvc mime-types content-type

我正在使用Spring 3功能上传文件。我想知道验证文件是否属于某种类型的最佳方法,特别是csv文件。我很确定检查扩展名是没用的,目前我正在检查上传文件的内容类型。我只是确保它是“text / csv”类型。而且只是为了澄清这是客户上传的文件,这意味着我无法控制其来源。

我很好奇Spring /浏览器如何确定内容类型是什么?这是确定上传了哪种文件的最佳/最安全的方法吗?我能100%肯定吗?

更新:我再也不知道如何确定文件的内容类型,以及如何确定内容类型。 spring /浏览器如何根据上传的文件知道内容类型是“text / csv”?

5 个答案:

答案 0 :(得分:1)

您可以使用

org.springframework.web.multipart.commons.CommonsMultipartFile对象。

它有getContentType();方法。

请查看以下示例http://www.ioncannon.net/programming/975/spring-3-file-upload-example/

你可以在CommonsMultipartFile对象上添加简单测试,如果内容类型不正确,可以重定向到错误页面。

答案 1 :(得分:1)

因此,您还可以计算每行文件中的逗号数。通常在文件的每一行上都有相同数量的逗号,以使其成为有效的CSV文件。

答案 2 :(得分:0)

为什么你不只是在验证器中取出文件名并将其拆分,文件类型为fileName.split(“\。”)[filename.length() - 1] string

答案 3 :(得分:0)

好的,在这种情况下,我建议你使用Csvreader java库。你只需要检查你的csvreader对象即可。

答案 4 :(得分:0)

据我所知,approxfun方法从用户代理所说的内容中获取其值 - 所以你要小心谨慎,因为这很容易被欺骗。

对于二进制文件,您可以查看magic number或使用库,例如​​mime-util或jMimeMagic。自Java 7以来还有getContentType(String),但它只适用于磁盘上的文件,并且在某些操作系统上报告了错误。