Ruby   发布时间:2022-04-03  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了ruby-on-rails – Rails 3,显示来自RAILS_ROOT上方的本地文件系统的jpg图像大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我试图找出一种方法来显示不受RAILS_ROOT(在RedHat或Ubuntu环境下)的已安装文件系统中的图像.我不想使用符号链接,因为这个应用程序实际上是通过Tomcat部署的,当我关闭Tomcat时,Tomcat会尝试遵循符号链接并删除挂载中的所有图像.由于这些文件的数量和大小,将图像置于公共/图像下也不是一种选择.

我查看了send_file,但这只会显示一个图像.我需要在格式很好的页面中显示6个请求的图像.我不想使用Base64编码,因为膨胀,但我不知道如何使用渲染页面传递图像数据.

同样,问题是在生成的HTML中无法通过URL访问图像,图像数据必须与页面的其余部分一起传递.我知道创建某种类型的服务来处理图像将是解决这个问题的最好方法,但是现在我只需要让它工作.

任何帮助非常感谢!

解决方法

由于显而易见的原因,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

现在您的图片可以在网址下找到:/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">

大佬总结

以上是大佬教程为你收集整理的ruby-on-rails – Rails 3,显示来自RAILS_ROOT上方的本地文件系统的jpg图像全部内容,希望文章能够帮你解决ruby-on-rails – Rails 3,显示来自RAILS_ROOT上方的本地文件系统的jpg图像所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。
标签: