我有一个Rails应用程序,允许用户上传视频(在本地而不是云端服务器上)。使用Paperclip和Rails在上传前检查文件大小/类型
我正在使用Paperclip 3.1.4和Paperclip-ffmpeg 0.9.0。
一切正常,工作正常,但问题是,如果用户以错误的格式上传文件,或者大于验证规则所允许的大小,则直到上传后才显示错误消息发生 - 对可用性不太好,特别是如果需要10分钟才能以错误的格式上传文件!
那么,有没有什么办法可以将jQuery(我承认知道的很少)整合到我的模型中,以便在用户点击“上传“按钮,而是等到应用程序尝试上传文件(如果有意义的话)?
下面是我的模型的一些代码(我已经剥离了不重要的东西):
class Video
attr_accessible :sourcefile
has_attached_file :sourcefile
...
validates_attachment_size :sourcefile, :less_than => 250.megabytes,
:message => "Sorry, your video is too large"
validates_attachment_content_type :sourcefile, :content_type => [...],
:message => "Sorry, the file format is wrong"
end
那么,有没有什么办法,我可以一个函数“螺栓”来触发某种形式的JavaScript来检查文件上传之前,这些验证规则启动到位(我想继续关闭用户在其浏览器中禁用JavaScript的机会)?
如果文件类型是正确的,如果还有另外一个函数可以用来触发jQuery-esque进度条,但在这个阶段并不一定需要。
谢谢!
编辑 -感谢下面的Kevin B,他指出jQuery/JavaScript不能用于检查文件大小。好吧!我还能采取其他方法吗?服务器运行nginx,但我宁愿不去那里 - 我宁愿在Rails代码本身内处理这个问题。
jQuery没有任何东西可以让你在上传之前检查文件的文件大小或文件类型,而且并非所有的浏览器都可以在使用flash之外进行检查。 – 2013-04-04 14:08:39
谢谢凯文。我会深入挖掘替代解决方案,如果发现任何问题,请在此处发布我的结果。 – Graeme 2013-04-04 14:29:10
好吧,你可以用javascript来做到这一点,它并不是所有的浏览器都支持。以下是一个包含一些示例的页面:https://developer.mozilla.org/en-US/docs/DOM/FileList – 2013-04-04 14:51:02