我正在尝试发送由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
答案 0 :(得分:1)
您是否将Axlsx呈现为文件,然后尝试发送?如果是这样,你可能会有更好的运气:
xlsx_package = Axlsx::Package.new(...)
# do whatever
send_data xlsx_package.to_stream.read
至少应该处理任何文件权限/路径问题。
您还可以使用我编写的axlsx_rails之类的gem来创建和发送xlsx文件。但是,我没有在Windows IIS上测试它。