我使用refile gem进行文件上传,并将文件直接上传到我的亚马逊s3公共存储桶中。文件正在上传到以下URL:
https://s3.amazonaws.com/{bucket-name}/store/6309035935359dca1ef549170e7facac9ab3553ad53946cea0bcb8335475
我使用amazon cloudfront从s3为这些资产提供服务,所以上面给出的资产的cloudfront url如下所示:
https://{distribution-name}.cloudfront.net/store/6309035935359dca1ef549170e7facac9ab3553ad53946cea0bcb8335475
当通过浏览器直接访问时,这两个urls都工作得很好。为了在我的app view文件中显示这个资源,我使用了refile gem下面的helper函数:
attachment_image_tag(@post, :profile_img, :fill, 350, 350)
现在的问题是,这个帮助器方法打印一个URL,如下所示:
https://{distribution-name}.cloudfront.net/attachments/5845d0a97dc77a57b5b05742a1eb26d629d7cdaa/store/fill/350/350/6309035935359dca1ef549170e7facac9ab3553ad53946cea0bcb8335475/file
由于此URL与上面的cloudfront URL不同,因此它不显示图像。如何强制attachment_image_tag函数打印正确的cloudfront URL?
发布于 2016-08-15 20:48:52
问题已解决。github上的另一个人指出了这个问题:https://github.com/refile/refile/issues/500#issuecomment-239784247
听起来你可能已经用你的S3存储桶设置了你的Cloudfront发行版了吗?但是,Refile不会直接生成指向S3上文件的URL(请参阅自述文件第3节.机架应用程序)。因此,您需要将Cloudfront发行版的源设置为应用程序的URL。这样,文件将在第一次请求时从您的应用程序流式传输,并由Cloudfront缓存以备将来的请求使用。
https://stackoverflow.com/questions/38954113
复制相似问题