确保上传的文件是gras中的csv文件的正确方法?

时间:2019-02-20 06:08:09

标签: csv grails grails-2.2

有一个文件输入,用于上传csv文件。

这是多部分文件类的文档。

https://docs.spring.io/spring-framework/docs/current/javadoc-api/org/springframework/web/multipart/commons/CommonsMultipartFile.html

现在,我想确保上传的文件是csv文件。换句话说,应用程序仅接受csv文件。 commonsmultipartfile类提供了两种方法。一种是contentType。对于csv文件,它返回application / octet-stream。另一种方法是originalFilename,该文件名带有扩展名。

enter image description here

enter image description here

所以我想知道确保上传的文件是csv文件的最佳方法是什么。我的怀疑是检查内容类型是不够的,因为application / octet-stream是二进制文件的mime类型。因此,建议您同时使用contenttype和originalfilename提取扩展名。我感谢任何指导。谢谢!我正在使用grails 2.2。

1 个答案:

答案 0 :(得分:1)

除了带有.csv扩展名的文件外,您可以阻止其他文件通过accept属性上传。

<input class="form-control" required="required" type="file" name="csvfile" id="csvfile" accept=".csv" />

这不会阻止某人更改扩展名,例如一个xslx文件并尝试上传,但是,我倾向于在流传输文件时解析一两行,如果它与我期望的模式不匹配,则拒绝它。 当然,这可能对您的解决方案不可行。