【发布时间】:2013-04-04 14:06:17
【问题描述】:
我有一个 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 式进度条,那也很好,但现阶段不一定需要这样做。
谢谢!
编辑 - 感谢下面的 Kevin B,他指出 jQuery/JavaScript 不能用于检查文件大小。那好吧!我还有其他方法可以采取吗?服务器正在运行 nginx,但我不想去那里 - 我更愿意在 Rails 代码本身中处理问题。
【问题讨论】:
-
jQuery 没有任何东西可以让您在上传之前检查文件的文件大小或文件类型,而且除了使用 flash 时,并非所有浏览器都允许这样做。
-
谢谢凯文。我会更深入地寻找替代解决方案,如果发现任何问题,我会在此处发布我的结果。
-
好吧,你可以用javascript来做,只是不是所有的浏览器都支持。这是一个包含一些示例的页面:developer.mozilla.org/en-US/docs/DOM/FileList
标签: jquery ruby-on-rails paperclip-validation