从Sinatra发送Axlsx Gem生成的文件时发送零字节

时间:2018-12-04 23:48:59

标签: ruby sinatra rack axlsx

尝试使用Ruby Sinatra和AXLSX gem提示下载窗口并流式传输XLSX文件时,我的excel文件已成功序列化为本地文件,因此我知道它是有效的excel文档,但是我需要它才能将内容传输到最后用户。网上没有任何文档可以将AXLS和Sinatra的示例一起使用,只有rails。感谢您的帮助!

class Downloads < Sinatra::Base
  get '/downloads/report' do
    ## ...
    Axlsx::Package.new do |p|
      p.workbook.add_worksheet(name: 'tab name') do |sheet|
        ## ...
      end
      content_type 'application/xlsx'
      attachment 'cost-code-dashboard.xlsx'
      p.to_stream # unsuccessful
      # p.to_stream.read # unsuccessful as well
    end
  end
end

我也没有成功尝试以下代码段

Axlsx::Package.new do |p|
  ## ...
  send_file p.to_stream.read, type: "application/xlsx", filename: "cost-code-dashboard.xlsx"
end

1 个答案:

答案 0 :(得分:1)

问题似乎与setuid(.)的调用方式有关,辅助功能在Axlsx中不可用,以下解决方案有效-在线文档说,下面的content_type更好

Axlsx::Package.new