0

我正在使用 refile gem 进行文件上传,并将文件直接上传到我的 amazon s3 公共存储桶。这些文件正在上传到以下 URL:

https://s3.amazonaws.com/{bucket-name}/store/6309035935359dca1ef549170e7facac9ab3553ad53946cea0bcb8335475

我正在使用 amazon cloudfront 从 s3 提供这些资产,因此上面给出的资产的 cloudfront url 是这样的:

https://{distribution-name}.cloudfront.net/store/6309035935359dca1ef549170e7facac9ab3553ad53946cea0bcb8335475

直接通过浏览器访问时,这两个网址都可以正常工作。要在我的应用程序视图文件中显示此资产,我正在使用 refile gem 以下辅助函数:

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函数打印正确的云端 URL?

4

1 回答 1

0

问题已解决。github上的另一个人指出了这个问题:https ://github.com/refile/refile/issues/500#issuecomment-239784247

听起来您可能已经使用 S3 存储桶作为其来源设置了 Cloudfront 分发?但是,Refile 不会直接生成指向 S3 上文件的 URL(请参阅自述文件第 3 节。机架应用程序)。因此,您需要将 Cloudfront 分发的来源设置为应用程序的 URL。这样,文件将在第一个请求时从您的应用程序流式传输,并由 Cloudfront 缓存以供将来请求。

于 2016-08-15T12:48:52.007 回答