我试图想出一个办法来显示从没有受到RAILS_ROOT(在RedHat或Ubuntu环境)安装的文件系统映像。 我不想用一个符号链接,因为这个应用程序是通过Tomcat的实际部署和Tomcat试图跟随符号链接并删除所有图像在山上时,我关闭Tomcat。 把下公共/图像的图像也不是一种选择,由于这些文件的数量和大小。
我看着由send_file,但将只显示一个图像。 我需要一个很好的格式化页面显示6个请求的图像。 我宁愿不使用的,因为膨胀的Base64编码,但我不知道怎么回事的图像数据传下来所呈现的页面。
同样,问题是,图像无法通过URL在生成的HTML浏览,图像数据必须被传递下来的页面的其余部分。 我知道,创造一些类型的服务,以服务器最多图像是处理最好的办法,但现在我只需要得到这个工作。
任何帮助非常感谢!
由于显而易见的原因Rails会不会允许用户访问外部的文件系统的部分RAILS_ROOT/public
。 你实际上是一部分的方式存在,当你提到的sendfile(或X-sendfile的喜好。)的解决方案是让Rails的服务HTML网页正常其中包含链接到一个Rails动作供应的各个文件。
例如,假设我要显示在文件系统某处深一些图像。 首先,我必须创建在同一时间提供了一个形象的动作。 所以在config/routes.rb
,你可以添加以下内容:
match '/serve_image/:filename' => 'images#serve'
然后,我要创建一个控制器,以匹配路线。 例如:
class ImagesController < ApplicationController
def serve
path = "/my/servers/image/path/#{params[:filename]}"
send_file( path,
:disposition => 'inline',
:type => 'image/jpeg',
:x_sendfile => true )
end
end
现在,您的图片的URL下可用:/serve_image/my_image.jpg。 所以,我们要做的最后一件事是创建一个漂亮的HTML页面,显示所有必要的图像。 这是简单的:
<img src="/serve_image/image1.jpg">
<img src="/serve_image/image2.jpg">
<img src="/serve_image/image3.jpg">
<img src="/serve_image/image4.jpg">