我使用Carrierwave和S3允许人们上传图片,图片网址显示为“https://myapp.s3.amazonaws.com/image/53/98ccfeca46.jpg”。
我想做两件事之一。
或2.使用CName重命名URL以不显示“s3.amazonaws.com”,以便图像URL将是 https://myapp.com/image/53/98ccfeca46.jpg
我怎样才能实现这些目标?是否可以在.com之后立即剪切图像URL? 我正在使用<%= link_to xyz.image%>显示URL。
答案 0 :(得分:0)
您可以创建一个帮助方法来显示网址,并使用字符串sub来切断网址的第一部分。
因此,在helpers文件夹中,在相应模型的帮助器中,您可能具有类似
的函数def show_url(url)
return url.sub("https://myapp.s3.amazonaws.com", "")
end
然后在你的助手中你会<%= link_to show_url(xyz.image) %>
或者确实类似,但使用正则表达式
def show_url(url)
return url.match(/.com(.+)/)[1]
end
答案 1 :(得分:0)
如果您使用的是carrierwave,则可以调用.path
来检索图像的路径。我在本地试过这个并且工作正常,但我不确定它是否适用于生产。试试这个:
<%= link_to xyz.image.path %>
或者,您可以使用CloudFront为S3文件提供服务,这样您就可以向分发中添加一堆自定义CNAME,这样您就可以拥有assets.myapp.com/xyz.jpg