如何从rails的根加载图像

时间:2015-02-23 02:11:18

标签: ruby-on-rails ruby-on-rails-4

这是我的Rails项目的结构

Root
  -app
  -bin
  -config
  -db
  -lib
  -log
  -public
  -spec
  -test
  -tmp
  -uploads
      -images
  -vendor

我想访问“Root / uploads / images”目录中的图像

我通过谷歌搜索尝试了很多,没有任何帮助,我坚持这一点。请尝试给出解决方案。非常感谢。

1 个答案:

答案 0 :(得分:1)

你可以尝试一下:

class ImagesController < ApplicationController
  def show
    dir_path = "#{Rails.root}/uploads/images"
    available_files = Dir.entries(dir_path).map{|e| e.gsub(/\..*/,'')}.reject{|c| c.empty?}
    file_path = if available_files.include?(params[:image])
                  "#{dir_path}/#{params[:image]}"
                else
                  "#{dir_path}/404.jpg"
                end

    response.headers['Cache-Control'] = "public, max-age=#{12.hours.to_i}"
    response.headers['Content-Type'] = 'image/jpeg'
    response.headers['Content-Disposition'] = 'inline'
    render :text => open(path, "rb").read
  end
end

在routes.rb中:

get "images/:image" => "images#show"

如果您担心安全问题,可以向控制器添加权限检查。