我有一个Rails应用程序,它使用Paperclip来处理上传的文件,我们目前是由Rackspace托管的。
该应用程序目前托管在单个服务器上,我正在构建一个具有负载平衡器、应用程序服务器和独立数据库服务器的更具伸缩性的解决方案。我需要做的最后一件事是为上传的资产提供解决方案。我试过使用Rackspace的CloudFiles,但似乎使用回形针和CloudFiles的唯一方法是将它们放在公共CDN上,而我不能使用,用户需要经过身份验证才能访问这些文件。在我转向亚马逊S3之前,由于他们有临时URL的选项,您是否知道如何将CloudFiles与纸夹一起使用并要求身份验证才能访问文件?
任何帮助,提示,谷歌搜索,链接,或解决方案将非常感谢。
发布于 2014-04-04 04:56:40
碰巧的是,云文件also supports临时URL和it appears that Paperclip does allow you to make use of it的生成。只需在视图中使用#expiring_url而不是#url从Attachment生成URL:
= image_tag @organization.logo.expiring_url(Time.now.to_i + 100, :original).gsub(/^http:/, "https")回形针将only generate http urls,但由于Rackspace的临时URL在校验和中不使用该方案,您可以使用gsub调用将其转换为https URL。另外,请注意,#expiring_url的第一个参数是一个绝对时间戳(从纪元开始的秒数)。
Rackspace的过期URL是最近才进入fog的-- v1.18.0 --所以如果您使用的是较旧的版本,您可能需要升级fog才能利用它们:
bundle upgrade fog回形针还支持generating obfuscated URLs,这看起来很有趣,但安全性较低,因为服务器不会使其过期。
发布于 2014-08-11 13:32:58
您可以像这样添加密钥:
class Rackspace
def self.add_temp_url_key
require 'fog'
puts "Creating Storage Service"
begin
service = Fog::Storage.new(
:provider => 'rackspace',
:rackspace_username => ENV['FOG_USERNAME'],
:rackspace_api_key => ENV['FOG_API_KEY'],
:rackspace_region => ENV['RACKSPACE_REGION'].to_sym
)
service.post_set_meta_temp_url_key(ENV['RACKSPACE_TEMP_URL_KEY'])
puts "X-Account-Meta-Temp-Url-Key successfully set to #{ENV['RACKSPACE_TEMP_URL_KEY']}"
rescue => e
puts "Unable to set X-Account-Meta-Temp-Url-Key - #{e.inspect}"
puts e.backtrace
end
end
endhttps://stackoverflow.com/questions/22846512
复制相似问题