0

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

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

所以,我的问题是 - 我可以以某种方式显示“加载”动画(或文本,或另一张图片 - 无关紧要)而不是损坏的(尚不可用)图像,一旦它准备好 - 将图像显示到用户。这可以在没有 AJAX 的情况下完成吗?或者我应该考虑用 AJAX 重新做吗?

对不起,故事很长。希望得到您的帮助!

提前致谢!:)

4

2 回答 2

2

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

于 2012-10-09T19:56:33.017 回答
1

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

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

您还可以使用此处描述的 JS 文件 API:http: //kellishaver.tumblr.com/post/21428272282/using-the-file-api-to-preview-images-before-uploading

我想还有其他选择。

于 2012-10-09T18:24:16.863 回答