Rails背景图片上传

我正在使用“carrierwave”gem来上传图像文件,还使用“carrierwave backgrounder”处理上传+在后台使用RMagick处理图像(我使用延迟作业)。

一切都像魅力一样。 除了一件事 – 我想上传图像并在上传表单下显示它们(因此,所有内容都发生在同一页面上)。 所以,基本上,会发生什么 – 因为上传和图像处理相对较慢,到发布后页面呈现时 – 图像本身还没有准备好:所以image_tag显示了破碎的“资产”链接(href =“资产”)。 等待2-3秒(几次刷新)后,图像出现在屏幕上。

所以,我的问题是 – 我可以以某种方式显示“ 加载 ”动画(或文本,或其他图片 – 无关紧要) 而不是破碎(尚未提供)的图像,并且一旦准备就绪 – 将图像显示到用户。 这可以在没有AJAX的情况下完成吗? 或者我应该考虑用AJAX重新做它?

对不起,长话故事。 希望对你有所帮助!

提前致谢! 🙂

我的解决方案很简单:我观察数据库中是否有任何包含“tmp”字段的图像(st tmp!= null)。 如果是这样 – 它们正在后台处理,所以我使用setInterval函数,它一直询问tmp是否为null:一旦它为null,处理就完成了。 如果不是 – 正在运行加载动画而不是上传的图像。 非常简单。

你有不同的方法来实现这一目标:

一种是使用https://github.com/lardawge/carrierwave_backgrounder ,因此您将知道图像是否正在使用它使用的新列进行处理。

你也可以使用这里描述的JS File API: http : //kellishaver.tumblr.com/post/21428272282/using-the-file-api-to-preview-images-before-uploading

我猜还有其他选择。