我有一个通过回形针gem在order_items
表中上传的PDF。 PDF已成功上传,通过访问生成的S3 URL,我可以看到上传的文件。
我的问题是,当我以活动管理员的身份下载文件时,它给我错误:
ActionController::MissingFile
Cannot read file
我在活动管理员中的member_action是:
member_action :art_proof, method: :get do
@order = resource
@order_item = @order.order_items.where(id: params[:item_id]).first
@uniform = @order_item.uniform
@stock = @order_item.stock
if @order_item.decoration_preview.url
send_file @order_item.decoration_preview.url,
filename: @order_item.decoration_preview_file_name,
type: @order_item.decoration_preview_content_type
render :nothing => true
else
render layout: false
end
结束
我正在尝试通过send_file方法下载文件。知道为什么会这样吗?
答案 0 :(得分:0)
我认为您不能将send_file
与S3 URL一起使用。相反,我对URL进行了预签名,并对URL进行了redirect_to
签名。像这样:
aws_resource = Aws::S3::Resource.new(credentials: credentials)
presigner = Aws::S3::Presigner.new(client: aws_resource.client)
redirect_to presigner.presigned_url(:get_object, bucket: bucket_name, key: file.key)