【发布时间】:2012-02-24 23:19:31
【问题描述】:
我正在使用带有 rails 3 的 jQuery-File-Upload,它运行良好。但是我没有找到任何关于如何在客户端验证上传文件的扩展名或内容类型的信息。
有没有办法做到这一点?
当然,无论如何我都会在服务器端通过 Paperclip 对其进行验证,但我认为在客户端验证一次会更好。
【问题讨论】:
标签: ruby-on-rails validation file-upload ruby-on-rails-3.1
我正在使用带有 rails 3 的 jQuery-File-Upload,它运行良好。但是我没有找到任何关于如何在客户端验证上传文件的扩展名或内容类型的信息。
有没有办法做到这一点?
当然,无论如何我都会在服务器端通过 Paperclip 对其进行验证,但我认为在客户端验证一次会更好。
【问题讨论】:
标签: ruby-on-rails validation file-upload ruby-on-rails-3.1
接受文件类型
允许文件类型的正则表达式匹配文件类型或文件名,因为只有支持文件 API 的浏览器才会报告文件类型。
Type: Regular Expression
Example: /(\.|\/)(gif|jpe?g|png)$/i
【讨论】:
这个问题暗示您(与大多数人相反)意识到,当您仅检测扩展时,您并没有检查 mime 类型。
在 HTML5 中你可以使用 accept 属性:
<input type="file" accept="video/*" />
您可以使用多个(逗号分隔?)值。 但是规范说空格分隔,但实际上我只看到逗号分隔的值。 注意:在支持 HTML5 的浏览器中,添加更多验证是多余的。
但如果您的问题与其他用途有关(例如拖放文件上传),那么您可以使用 javascript 代替 jquery:
if(!(file.type.indexOf('video/') == 0)) {
alert('nope');
return false;
}
不用说,你也应该在服务器端进行验证。
【讨论】: