0

我的应用程序托管在 Heroku 上,我想知道是否可以将文件上传到 Heroku 上的 public/ 文件夹而不是直接上传到 - 比如说 - Linode

我的应用同时使用 Heroku 和 Linode。两者通过网络服务请求相互交谈。但一般来说,我尝试仅在 Linode 上存储任何生成/上传的文件 - 而在 Heroku 上没有任何内容

现在我有一种情况,我想允许用户上传文件。最终目的地是 Linode。但目前,我不得不从客户端 PC -> Heroku -> Linode 去。然而,最佳解决方案是 Client PC -> Linode

在尝试重新连接现有代码之前,我想我会问一下。如下更改 storage_dir 方法会成功吗?

def storage_dir
  return http://<linode>/<local-folder>
end

感谢您的帮助

4

1 回答 1

0

那么,您使用的是 CarrierWave 吗?我不确定您当前如何上传到 Linode,但我会尝试一下。

因此,根据 CarrierWave 在 GitHub 上的文档,您可能需要在 config/initializers 中的carrierwave.rb 文件中添加类似这样的内容:

CarrierWave.configure do |config|
  config.fog_credentials = {
    :provider               => 'AWS',          # required
    :aws_access_key_id      => 'xxx',          # required
    :aws_secret_access_key  => 'yyy',          # required
  }
  config.fog_directory  = 'name_of_directory'  # required
end 

当然,前提是您使用的是 Amazon AWS S3。我在http://ruby-doc.org/gems/docs/p/phpfog-fog-0.4.1.2/Fog/Linode/Compute/Mock.html找到了一些 linode (和其他存储服务)的雾文档如果你点击在 'new(options={}),' 上,你会看到@linode_api_key = options[:linode_api_key]. 因此,我认为您将能够使用 CarrierWave 直接上传到 Linode:

CarrierWave.configure do |config|
  config.fog_credentials = {
    :provider               => 'Linode',       
    :linode_api_key         => 'xxx',          
  }
  config.fog_directory  = 'name_of_directory'  
end 
于 2013-10-01T21:41:29.170 回答