Refile上传到S3仍然会返回localhost上传

时间:2015-06-01 18:03:22

标签: ruby-on-rails refile

我按照refile/refile上的教程尝试使用`refile-s3将我的照片上传到S3。但是,它仍然上传到我的localhost ..我想知道为什么??

Github中的代码:https://github.com/chrisyeung1121/refile-example

我错过了什么吗?

1 个答案:

答案 0 :(得分:0)

我运行了示例应用程序,一切都正确完成,文件上传到S3。您可以在查看s3存储桶时看到此信息,应该有一个/store文件夹,其中的文件内容与此类似:8d005532259e4abc0.....它将与数据库中保存的ID相对应。在您的情况下,id在用户模型中存储为profile_image_id。

attachment_url的结果返回<img src="/attachments/store/fill/300/300/8d005532259e4abc0...../profile_image.jpg" alt="Profile image">可能会让人感到困惑,因为它似乎仍在上传到localhost。

正在发生的事情是,refile从亚马逊s3下载文件,动态修改为300x300并将其发送到浏览器。但是,每次加载页面时都不应该这样做,因为这会浪费很多处理能力。这是需要CDN的地方,而refile旨在使用CDN。这样处理过的imaged就会被缓存,一切都会快得多。

refile.rb配置文件中:

Refile.cdn_host = "https://your-dist-url.cloudfront.net"

或者在我的情况下我将其限制为生产:

if Rails.env.production?
  Refile.cdn_host = "https://your-dist-url.cloudfront.net"
end
  

请注意,如果使用低于0.6.0的版本,.cdn_host应为.host

现在这应该返回类似<img src="https://your-dist-url.cloudfrond.net/attachments/store/fill/300/300/8d005532259e4abc0...../profile_image.jpg" alt="Profile image">

的内容

您可以在官方documentation中了解更多相关信息。