2015-04-06 135 views
0

我有一個簡單的應用程序在Rails中允許我通過使用Carrierwave和霧將文件上傳到Amazon S3。它工作正常。我現在正在下載文件並將其顯示在瀏覽器上。有用。但是,專用鏈接從S3(我將其設置爲一個臨時鏈接)顯示在瀏覽器,如:通過Carrierwave和霧從亞馬遜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中的私人網址?

回答

0

您可以通過CloudFront路由圖像。 Cloud Front有許多優點,但確實需要付出代價。 一旦您通過雲端路由您的圖片,您會獲得與s3相同的資源鏈接類型,但在雲端,您可以更改鏈接。

REF: Using Alternate Domain Names