如何隐藏丑陋的 aws s3 url - RoR 应用程序
how to hide the ugly aws s3 url - RoR app
我的 RoR 应用程序在 Heroku 上并且活动存储配置正确。但是,当我在应用程序中获取上传的文档时,url 类似于 https://cremers.s3.eu-west-1.amazonaws.com/cx9xy0pmbieagvuw8a0vzcnfhvcc?response-content-disposition=inline%3B filename%3D"Digeste_9.1.pdf"%3B....
如何将其更改为 "normal" url,例如 https://www.cremers.fr/documents/digest_9.1.pdf?
您可以使用 route/controller 作为一种代理。我已经做到了这一点,下面是我使用的大致代码,根据您的具体情况进行了编辑。
显然,我没有使用您的设置对此进行测试,而且我没有在我的案例中使用 ActiveStorage,因此您可能 need/want 进行调整,但这应该让您开始:
# config/routes.rb
Rails.application.routes.draw do
get '/documents/:filename.:format.:compression', to: 'documents#show'
end
# app/controllers/documents_controller.rb
require 'open-uri'
class DocumentsController < ApplicationController
def show
bucket_name = 'cremers'
aws_region = 'eu-west-1'
filename = params[:filename]
s3_url = "https://s3-#{aws_region}.amazonaws.com/#{bucket_name}/#{filename}"
data = open(s3_url)
send_data data.read, type: data.content_type
end
end
我的 RoR 应用程序在 Heroku 上并且活动存储配置正确。但是,当我在应用程序中获取上传的文档时,url 类似于 https://cremers.s3.eu-west-1.amazonaws.com/cx9xy0pmbieagvuw8a0vzcnfhvcc?response-content-disposition=inline%3B filename%3D"Digeste_9.1.pdf"%3B....
如何将其更改为 "normal" url,例如 https://www.cremers.fr/documents/digest_9.1.pdf?
您可以使用 route/controller 作为一种代理。我已经做到了这一点,下面是我使用的大致代码,根据您的具体情况进行了编辑。
显然,我没有使用您的设置对此进行测试,而且我没有在我的案例中使用 ActiveStorage,因此您可能 need/want 进行调整,但这应该让您开始:
# config/routes.rb
Rails.application.routes.draw do
get '/documents/:filename.:format.:compression', to: 'documents#show'
end
# app/controllers/documents_controller.rb
require 'open-uri'
class DocumentsController < ApplicationController
def show
bucket_name = 'cremers'
aws_region = 'eu-west-1'
filename = params[:filename]
s3_url = "https://s3-#{aws_region}.amazonaws.com/#{bucket_name}/#{filename}"
data = open(s3_url)
send_data data.read, type: data.content_type
end
end