使用rails和paperclip为/ public文件夹中的文件设置限制

时间:2016-05-10 16:26:21

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

我正在使用回形针进行图像存储,我遇到了问题。当文件上传时,paperclip会生成两个文件,一个带有水印的处理过的图像和原始文件,在这种情况下,图像文件在公共文件夹中,现在的问题是,如果用户进入它,我可以限制网址吗?像:

localhost:3000/files/photos/image_processeds/57308cd52cb1be0846e4be9f/original/image.png

如果用户进入该链接,将被禁止。

这是我的回形针配置

has_mongoid_attached_file :image_original,
                        :url => "/files/:class/:attachment/:id/:style/:basename.:extension",
                        :path => ":rails_root/public/files/:class/:attachment/:id/:style/:basename.:extension"

has_mongoid_attached_file :image_processed,
                        processors: [:watermark],
                        styles: {
                            thumb: ['150x150', :jpg],
                            small: ['350x300', :jpg],
                            medium: ['550x500', :jpg],
                            original: {geometry: '60%',watermark_path: "#{Rails.root}/public/images/logo.gif", position: "Center"}
                        },
                        :url => "/files/:class/:attachment/:id/:style/:basename.:extension",
                        :path => ":rails_root/public/files/:class/:attachment/:id/:style/:basename.:extension"

Theres是一种方法,或者可能找到更好的方法吗?

2 个答案:

答案 0 :(得分:0)

我想,original/image.png应加水印。 我的意思是处理后不应该存在没有水印的版本。 你看过了吗?

答案 1 :(得分:0)

解决了,一个可靠的解决方案是将原始图像的副本保存到数据库中,并仅在他们购买照片时授予访问权限,否则他们只能看到带有水印的副本:)