具体的来说就是,用户可以上传照片,但是这些个照片只能某些人可见。那么这些图像该如何处理?(储存,权限管理) 我之前做了个头像系统,用的是 Carrierwave,直接所有图片放到 rails app 目录下的 public 下面。
在输出的时候,过滤数据就行了。如果实在很简单,自己写两行代码就行了,如果涉及较复杂的权限控制,则可以用 https://github.com/CanCanCommunity/cancancan
https://github.com/carrierwaveuploader/carrierwave/wiki/How-To%3A-Secure-Upload
要注意 nginx 开启 send-file 功能还要额外配置。
更好的方法是放到云储存,默认私有,token 访问。
#4 楼 @flowerwrong 和图片名称没关系。这样做只是让别人猜不到真实的图片地址,而不是我发给你个图片地址你打开后提示 403,或发你个相册你打开后提示相册时私有的。 #5 楼 @Rei 我研究下,云存储就算了,这个是个外包项目,没必要再增加成本(不过我用了阿里的 mysql 服务器,最低配的有个很大的优惠)
给你举个例 view
<%= image_tag("/images/11") %>
controller images.rb
class ImagesController < ApplicationController
def show
if login
send_file "/private_dir/images/#{params[:id] }.png"
else
raise 404
end
end
end
差不多就这个意思,将就看下。