使用send_file设置Content-Type

时间:2016-03-21 14:07:36

标签: ruby-on-rails

我需要为Apple通用链接发送一个具有特定内容类型(application/pkcs7-mime)的文件。 我使用rails中的send_file函数,并添加:type作为参数, 但类型总是text/plain

这是我的控制器:

class AppleController < ApplicationController
  def download_app_site_association
    send_file "#{Rails.root}/public/apple-app-site-association", {:filename => "apple-app-site-association", :type => "application/pkcs7-mime" , :x_sendfile => true}
  end
end

我也试着像这样添加它:

send_file "#{Rails.root}/public/apple-app-site-association", :filename => "apple-app-site-association", :type => "application/pkcs7-mime" , :x_sendfile => true

并像这样手动设置:

response.headers["Content-type"] = "application/pkcs7-mime"
send_file "#{Rails.root}/public/apple-app-site-association", :filename => "apple-app-site-association", :x_sendfile => true

任何人都可以解释为什么这不起作用吗?

2 个答案:

答案 0 :(得分:1)

我找到了解决方案。 问题是,当我尝试获取mywebsite.com/apple-app-site-association时,路由器首先搜索#{Rails.root}/public/中的文件,然后在routes.rb中搜索路由

由于我的档案和我的路线名称相同,因此从未到达apple_controller

所以我刚刚更改了文件名。

答案 1 :(得分:0)

您可以设置参数

http://api.rubyonrails.org/classes/ActionController/DataStreaming.html#method-i-send_file

UPDATE:是在config / initializers / mime_types.rb下注册的Mime类型吗?