首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用axlsx进行流式下载

使用axlsx进行流式下载
EN

Stack Overflow用户
提问于 2019-12-18 17:48:09
回答 2查看 384关注 0票数 1

如何使用axlsx gem进行流式下载。我需要一种方法来下载大文件分块。时间将超过5分钟,并且我不想使用任何后台作业来完成此任务。我使用的是axlsx_rails gem

我想出的方法

代码语言:javascript
复制
def download
  headers["Content-Type"] = "text/xlsx"  
  headers["Content-disposition"] = "attachment; filename=\"#{file_name}\""  
  headers['X-Accel-Buffering'] = 'no' 
  headers["Cache-Control"] ||= "no-cache" 
  headers.delete("Content-Length")  
  @result =  FetchRecord.new(data)
  response.status = 200
  render xlsx: "file_download.xlsx.axlsx", filename: "#{file_name.camelize}.xlsx",locals: {result: @result}
end

上面的解决方案对我不起作用。有人能告诉我我哪里错了吗?

EN

回答 2

Stack Overflow用户

发布于 2019-12-19 16:08:37

代码语言:javascript
复制
def download
  @result =  FetchRecord.new(data)
  @file = ActionView::Base.new(Rails.configuration.paths["app/views"]).render(handlers: [:axlsx], template: "model_name/download.xlsx", locals: {result: @result})
  respond_to do |format|
      format.xlsx { send_file @file, disposition: "attachment", filename: "file_download.xlsx"}
  end
end
票数 0
EN

Stack Overflow用户

发布于 2019-12-18 17:57:27

你真的想由你的用户生成文件触发器吗?这可能会打开DOS攻击载体。您应该考虑使用后台工作来准备这些文件。

其余的应该在你的the服务器中处理,而不是通过rails或rack。

票数 -3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59389318

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档