2014-09-30 41 views
0

我已经在公用文件夹下载入carrierwave的图像。 出于安全原因,我要将文件夹更改为根目录下。Rails4:如何将carrierwave上传的图片存储在私人文件夹中?

Althogh我提到的职位How to: Secure Upload创造carrierwave.rb,我不知道该怎么写由carrierwave上传的路径。

如何在私人文件夹下显示图像?

image_uploader.rb

class ImageUploaader < CarrierWave::Uploader::Base 

    storage :file 
    def store_dir 
    "uploads/#{model.class.to_s.underscore}/#{mounted_as}/#{model.id}" 
    end 

end 

我创建\设置\初始化\ carrierwave.rb

CarrierWave.configure do |config| 
    config.permissions = 0600 
    config.directory_permissions = 0700 
    config.root = Rails.root 
end 

我还创建images_controller.rb

class ImagesController < ApplicationController 
    #I tried some, but doesn't work 
end 

我已经使用下面的视图显示图像。
\意见\文章\ _article.html.erb

<% article.photos.each do |photo| %> 
    <%= image_tag(photo.image_url(:thumb).to_s, class: :thumb) if photo.image? %> 
<% end %> 

,如果你能在routes.rbimages_controller.rb_article.html.erb指定代码将不胜感激。

回答

0

我通过Rails 4 In Action运行,我们也有类似的需求。在那本书中,他们让我们在应用程序根目录下创建一个名为“文件”的文件夹。

然后,我们改变了线在你上传来自:

uploads/#{model.class.to_s.underscore}/#{mounted_as}/#{model.id} 

files/#{model.class.to_s.underscore}/#{mounted_as}/#{model.id} 

现在,在这本书中,文件会下降到files目录。然后,您可以使用像CanCanCan之类的设置来设置权限,或者自己编写权限。这似乎是。我认为。

+0

谢谢你的回答,@艺术。 我可以将图像存储在一个文件夹中。我想知道如何在一个文件夹中显示图像。 如果您可以更具体地显示图像,我们将不胜感激。 – SamuraiBlue 2014-10-02 12:19:23

+0

仅供参考,[cancancan](https://github.com/CanCanCommunity/cancancan) – venkatvb 2016-01-17 15:34:35

相关问题