Rails Rails 怎么实现动态的加载图片资源?

wcc526 · 2014年06月17日 · 最后由 seamon 回复于 2014年06月18日 · 3450 次阅读

我的场景,有些图片需要经过 rails 后台处理,然后动态地显示给用户。

比如用户经过一些操作后,会产生一个图片 A.jpg,用户需要在网页的上看到这个 A.jpg 的具体效果。

在 production 环境下,由于图片等静态资源是交给 nginx 处理的,我如果只是在 apps/assets 目录里放入这个 A.jpg,网站是访问不到这个 A.jpg 的。

如果使用 send_file,这个图片只能被用户下载 ('attachment'),或者显示在一个全新的网页里,这个页面就只有图片,不能再加其它 html 元素 (' 'inline' ).这两种不是我想要的效果。

我的问题是要如何存放这个 A.jpg 图片,以便在网页上像正常的图片资源一样显示出来?

https://devcenter.heroku.com/articles/rails-4-asset-pipeline 我也是新手,曾经提问过这样的问题。 别人直接扔个链接过来了,这些东西都要自己动手。

2 楼 已删除

#2 楼 @rruubbyy 要想补全的话用 IDE,ruby mine

4 楼 已删除
5 楼 已删除

这。。也是一个问题?

你想要的难道是文件上传功能? 还是说用后端动态产生图片,比如在用户头像的图片上面加东西,然后生成新图并保存?

可以设置 nginx 域名访问静态资源的时候(比如 jpg 或 png 等等)把本地地址指向另一个文件夹,然后就可以按照访问路径在这个文件夹下保存图片等资源,网站访问的时候直接从这个文件夹里读取,不再跳到 rails 工程目录里

#7 楼 @huacnlee 类似这种功能,请问要怎样实现比较好,谢谢!

其实你的需求跟生成验证码差不多了,看这个对你有没有帮助,比较老的代码了 https://gist.github.com/jimhj/4326959

#10 楼 @fresh_fish 谢谢,但是问下你的验证码图片是放在哪个目录下?

放临时目录就可以了,然后结合 ajax 去处理显示。。

#11 楼 @wcc526 我这里写的验证码图片是动态生成的,保存在临时目录下的,你的需求可能需要这样吧

image = File.read(Rails.root.join('app/assets/A.jpg'))

send_data(balabala....)

#13 楼 @fresh_fish 但是用 send_data 的话,显示效果是整个网页上就一张图片,我想要的是类似验证码那种,嵌在网页上的。

#12 楼 @zhu2688 放在临时目录,怎么显示出来?图片资源等文件不是要放在 assets 目录下 nginx 才能访问到?

#14 楼 @wcc526 看 gist 里的 helper

img src="/xxx/xxx",然后在这个 action 里 send_data,肯定没问题。以前我就这么写过验证码图片,实时生成后 send 到客户端,不用放在临时目录。

需要 登录 后方可回复, 如果你还没有账号请 注册新账号