rails send_file无法使用iis

时间:2014-02-22 21:30:48

标签: ruby-on-rails iis

我正在尝试发送由Axlsx usind send_file生成的.xlsx文件。

send_file "#{RAILS_ROOT}/public/excel/test.xlsx"

在使用Webrick服务器进行调试时,它可以正常工作,但在生产服务器(带有IIS和Helicon Zoo的Windows Server 2008 R2)上,它会发送空/损坏的xlsx文件。

生产服务器上的路径中的文件不为空。

我该如何解决这个问题?

这是rails log

Started GET "/export/excel/summary_report/2" for 192.168.1.108 at 2014-02-22 22:59:57 +0000
  Processing by ExportController#export_excel_report as HTML
  Parameters: {"report_class"=>"summary_report", "entries"=>"2"}
Rendered tables/_csv_header_cell.slim (15.6ms)
Rendered tables/_csv_header_cell.slim (0.0ms)
Rendered tables/_csv_header_cell.slim (0.0ms)
Rendered tables/_csv_header_row.slim (15.6ms)
Rendered tables/_csv_header.slim (31.2ms)
Rendered tables/cells/_employee.slim (15.6ms)
Rendered tables/cells/_employee.slim (0.0ms)
Rendered tables/_csv_data_row.haml (46.8ms)
Rendered tables/_csv_data_grid.slim (62.4ms)
Rendered tables/_csv_table.slim (156.0ms)
Rendered filters/_summary_report.haml (171.6ms)
Sent file public/excel/summary_report1393109998_178.xlsx (0.0ms)
Completed 200 OK in 312ms

1 个答案:

答案 0 :(得分:1)

您是否将Axlsx呈现为文件,然后尝试发送?如果是这样,你可能会有更好的运气:

xlsx_package = Axlsx::Package.new(...)
# do whatever
send_data xlsx_package.to_stream.read

至少应该处理任何文件权限/路径问题。

您还可以使用我编写的axlsx_rails之类的gem来创建和发送xlsx文件。但是,我没有在Windows IIS上测试它。