2014-02-22 70 views
1

我試圖發送由Axlsx usind send_file生成的.xlsx文件。rails send_file不能與iis配合使用

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

在使用它工作正常的WEBrick服務器調試,但生產服務器(Windows Server 2008 R2與IIS和赫利動物園)上發送空/損壞XLSX文件。

生產服務器上的路徑中的文件不是空的。

我該如何解決這個問題?

這裏是軌道登錄

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

您是否檢查過日誌文件以查看文件發送時會發生什麼? –

+0

添加日誌到帖子。 「發送0.0ms」看起來可疑。 –

回答

1

你渲染Axlsx到一個文件,然後試圖發送?如果是這樣,你可能有更好的運氣:

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

這應該至少照顧任何文件權限/路徑問題。

您還可以使用我編寫的像axlsx_rails這樣的gem來創建和發送xlsx文件。但是,我沒有在Windows IIS上對它進行測試。

+0

是的,我用來渲染Axlsx文件。你的解決方案爲我工作。非常感謝你。 –