我的難題是如何在HTML頁面中嵌入源代碼不可用於互聯網的圖像。顯示存儲在非公開文件夾中的回形針附件
比方說,我有,在Rails /回形針設置,下面的模型:
class Figure < ActiveRecord::Base
has_attached_file :image
...
end
class User < ActiveRecord::Base
... (authentication code here)
has_many :figures
end
在控制器:
class FiguresController < ActionController::Base
def show
# users must be authenticated, and they can only access their own figures
@figure = current_user.figures.find(params[:id])
end
end
在視圖:
<%= image_tag(@figure.image.url) %>
的當然,問題在於,使用默認的Paperclip設置圖像存儲在公共目錄和任何其他位置e通過鏈接可以繞過認證/授權訪問存儲的映像。現在
,如果我們告訴回形針在私人位置存儲附件:
class Figure < ActiveRecord::Base
has_attached_file :image, path: ":rails_root/private/:class/:attachment/:id_partition/:style/:filename",
url: ":rails_root/private/:class/:attachment/:id_partition/:style/:filename"
...
end
然後可以很容易地控制誰的形象得到送達:
class FiguresController < ActionController::Base
def show
@figure = current_user.figures.find(params[:id])
send_file @figure.image.path, type: 'image/jpeg', disposition: 'inline'
end
end
這一行動的效果在其自己的瀏覽器窗口/選項卡中顯示圖像。
另一方面,image_tag(@figure.image.url)
可以理解地產生路由錯誤,因爲源不能被訪問!
因此,有沒有一種方法可以通過image_tag
在普通的HTML頁面中顯示圖像,同時仍然限制對圖像的訪問?