通过Carrierwave和Fog从Amazon S3下载文件

时间:2015-04-06 04:14:24

标签: ruby-on-rails ruby amazon-s3 carrierwave fog

我在Rails中有一个简单的应用程序,允许我使用Carrierwave和雾将文件上传到Amazon S3。它工作正常。我现在正在下载文件并在浏览器上显示它们。有用。但是,来自S3的专用链接(我将其设置为临时链接)显示在浏览器上,如:

https://xxx.s3-ap-southeast-1.amazonaws.com/uploads/resume/attachment/4/xxx.pdf?X-Amz-Expires=100&X-Amz-Date=20150404T082207Z&X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=XXX/20150404/ap-southeast-1/s3/aws4_request&X-Amz-SignedHeaders=host&X-Amz-Signature=b72ac956fcd52ba887d9e4567d9e512207ba17dc4e5876bfc8c9d16b2db2367d

我不想公开S3的私人链接。相反,我希望显示如下链接: www.xxx.com/user/1/resume/1

我有一个模型resume.rb

class Resume < ActiveRecord::Base
  mount_uploader :attachment, ResumeUploader
end

带有显示操作的控制器

def show
  @resume = Resume.find(params[:id])
  @resume_name = @resume.attachment.path.split("/").last
end

我的观点:show.html.erb

<%= link_to @resume_name,  @resume.attachment.url  %>

我是ROR的新手。任何人都可以告诉我如何在不显示S3的私人网址的情况下在浏览器上显示该文件?

1 个答案:

答案 0 :(得分:0)

您可以通过CloudFront路由图像。 Cloud Front有许多优点,但它确实需要付出代价。 一旦您通过云端路由您的图像,您就可以获得与s3相同的域名链接,但在云端,您可以更改链接。

REF: Using Alternate Domain Names