无法使用send_data功能下载文件



>我需要将生成的XML文件下载到本地计算机。我将文件压缩成.zip文件,然后使用send_data功能下载它。我正在获得状态:Sent data xml_idocs.zip (7.6ms) Completed 200 OK in 61ms (Views: 7.4ms | ActiveRecord: 4.6ms).问题是文件未下载。我在使用Opera和Chrome浏览器的开发和生产环境中尝试了它。我该如何解决它?

法典:

filename = 'xml_idocs.zip'
zip_filestream = Zip::OutputStream.write_buffer do |zos|
zos.put_next_entry 'MATMAS05.xml'
zos.print builder.to_xml
zos.put_next_entry 'MATQM01.xml'
zos.print builder1.to_xml
end
zip_filestream.rewind
send_data zip_filestream.read, :filename => filename, :type => 'application/zip', :disposition => 'attachment'

好的,我自己发现了问题。提交form_with时调用了该函数。我将其更改为form_tag,文件下载工作正常。我没有研究为什么form_with不起作用,所以如果有人知道背景,我将不胜感激。

感谢您分享您的解决方案。

我在接受 CSV 并输出 CSV 但没有模型关系的表单上遇到了同样的问题。这一定是将来会解决的问题(另见:Rails 5:form_for vs form_with )

这是我的代码的样子:

<%= form_tag shipping_data_csv_path, multipart: true do %>
データCSV: <%= file_field_tag :csv %><br><br>
<%= submit_tag "データCSVを作成", class: 'btn btn-primary m-auto' %>
<% end %>

最新更新