csv - 确保上传的文件是 grails 中的 csv 文件的正确方法?
问题描述
有一个文件输入用于上传 csv 文件。
这是多部分文件类的文档。
现在我想确保上传的文件是 csv 文件。换句话说,该应用程序只接受 csv 文件。commonsmultipartfile 类提供了两种方法。一是内容类型。对于 csv 文件,它返回 application/octet-stream。另一种方法是 originalFilename,它给出带有扩展名的文件名。
所以我想知道确保上传文件是 csv 文件的最佳方法是什么。我怀疑检查内容类型是不够的,因为 application/octet-stream 是二进制文件的 mime 类型。因此,您是否建议同时使用 contenttype 和 originalfilename 来提取扩展名。我感谢任何指南。谢谢!我正在使用 grails 2.2。
解决方案
您可以使用 accept 属性阻止上传具有 .csv 扩展名的文件以外的任何内容,例如
<input class="form-control" required="required" type="file" name="csvfile" id="csvfile" accept=".csv" />
这并不能阻止某人更改例如 xslx 文件的扩展名并尝试上传,但是,我倾向于在流式传输文件时解析一两行,如果它与我期望的模式不匹配则拒绝它。当然,这对于您的解决方案可能不实用。
推荐阅读
- ios - Swift如何将超链接添加到按钮
- sql - 检查sql中的重复项
- excel - 如何在 VB.NET 中设置操作窗格控件的显示名称
- vue.js - 如何在 Vue js 中存储会话?
- java - 使用 for 循环在 CHAR[] 数组中查找特定 CHAR 元素 = 始终为 False
- javascript - 如何使用不和谐机器人从不和谐频道随机发布文本?
- javascript - 请求解释 React 中“将事件处理程序绑定到类实例”的概念
- java - com.example.myapplication W/ActivityThread:handleWindowVisibility:令牌 android.os.BinderProxy@4fbd972 没有活动
- android - 插件和应用程序发布的颤振问题
- javascript - 加载选项后选择元素上的默认值