保护 Carrierwave 上传的文件

发布于 2024-11-09 04:46:45 字数 302 浏览 0 评论 0原文

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

这是怎么做到的?

将存储目录从 public 移至 RAILS_ROOT,创建了显示和下载的路径。

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

另外,如果视图不会呈现我的绝对路径,而只是站点的相对路径,那就太好了。

want to make sure that ONLY users that are logged in can view/download files uploaded from carrierwave.

How is this done?

Moved store directory from public to RAILS_ROOT, created route to show and download.

Problem is if its an image, <%= image_tag(photo.image_url) %> I get the full path /Users/myname/projects/appname/files/image/id/image.png, so that doesn't render.

Also, would be nice if view would not render my absolute path, just relative path from site.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

天邊彩虹 2024-11-16 04:46:45

这实际上是一件非常容易做到的事情。这是一个讨论 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 方法。

This is actually a really easy thing to do. Here's a blog that talks about sendfile and x-sendfile. This should send you in the right direction.

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

Here is the rails docs for it.

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

Since this is all handled at the controller level, just make sure you have a before_filter that checks if the user is authorized, then use the send_file method in your controller action.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文