我按照refile/refile上的教程尝试使用`refile-s3将我的照片上传到S3。但是,它仍然上传到我的localhost ..我想知道为什么??
Github中的代码:https://github.com/chrisyeung1121/refile-example
我错过了什么吗?
答案 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中了解更多相关信息。