保护Carrierwave上传的文件

时间:2011-05-22 17:41:54

标签: ruby-on-rails file-upload carrierwave

要确保只有登录的用户才能查看/下载从carrierwave上传的文件。

这是怎么做到的?

将商店目录从公共目录移至RAILS_ROOT,创建显示和下载的路径。

问题是如果它是一个图像,<%= image_tag(photo.image_url) %>我得到完整路径/Users/myname/projects/appname/files/image/id/image.png,这样就不会渲染。

另外,如果视图不会渲染我的绝对路径,只是来自网站的相对路径,那就太好了。

1 个答案:

答案 0 :(得分:3)

这实际上是一件非常容易的事情。这是一个讨论sendfile和x-sendfile的博客。这应该会让你朝着正确的方向前进。

http://www.therailsway.com/2009/2/22/file-downloads-done-right

以下是有关它的rails文档。

http://api.rubyonrails.org/classes/ActionController/Streaming.html#method-i-send_file

由于这一切都是在控制器级别处理的,所以只需确保有一个before_filter来检查用户是否已获得授权,然后在控制器操作中使用send_file方法。