使用rails send_data发送PDF

Elo*_*dis 7 ruby ruby-on-rails redmine

我使用ruby 1.9.3和redmine 1.4.4

根据这个 - > 请帮我发送一个jpg文件使用send_data,我在控制器中这样做:

  @file = temp.path
  File.open(@file, 'r') do |f|
    send_data f.read, :filename => "myfile.pdf", :type => "application/pdf", :disposition => "attachment"
  end
  File.delete(@file)
Run Code Online (Sandbox Code Playgroud)

但它回来了ArgumentError (invalid byte sequence in UTF-8),为什么?

Elo*_*dis 10

必须对PDF文件进行编码

 file = temp.path
 File.open(file, 'r') do |f|
   send_data f.read.force_encoding('BINARY'), :filename => filename, :type => "application/pdf", :disposition => "attachment"
 end
 File.delete(file)
Run Code Online (Sandbox Code Playgroud)