html - 如何在 Windows IE 中单击时生成文件 'download'

标签 html ruby-on-rails css internet-explorer download

我在表单标签中有一个按钮,它生成一个 CSV 文件并在用户单击它时提示下载。

当我尝试在 IE 中完成此操作时,IE 会尝试使用 IE 打开文件,而这是不应该的。我只是想让它下载文件。

我的 HTML:

<FORM accept-charset="UTF-8" method="post" action="/generate_csv?calc[]total_interest=189.08">
  <DIV style="margin: 0px; padding: 0px; display: inline;"><INPUT name="utf8" value="✓" type="hidden">
    <INPUT name="authenticity_token" value="4o1dEDoFbbDoc3scpnhDaQpPtpFM5NitTOrYQA0AU5k=" type="hidden">
  </DIV>
  <INPUT id="print_csv" name="commit" value="Print CSV" type="submit">
</FORM>

我的 Rails Controller :

headers['Content-Disposition'] = "attachment;"
send_data(csv_string,
  :type => 'text/csv; charset=utf-8; header=present; disposition=attachment',
  :filename => @filename,
  :disposition => 'attachment')

有什么想法可以实现吗?

最佳答案

我会尝试以下方法。在您的 Controller 中,当您生成 CSV 文件时,您可能正在使用 send_data 或 send_file 发送它。那是对的吗?如果是这样,您可能需要将处置设置为“附件”,而不是简单地发送文件或数据。例如:

send_data @csv, :type => 'text/csv', :disposition => 'attachment', :filename => 'generate_csv.csv'

send_file '/path/to.csv', :type => 'text/csv', :disposition => 'attachment'

您可以做的另一件事是修改您的路由以包含一种格式。例如:

match 'generate_csv.csv' => 'csv#generate_csv'

您可以像这样将您的 post 请求转换为 get 请求:

<%= link_to "Print CSV", '/generate_csv?calc[]total_interest=189.08' %>

关于html - 如何在 Windows IE 中单击时生成文件 'download',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4949400/

相关文章:

ruby-on-rails - 如何在strftime方法中正确设置时间格式?

ruby-on-rails - Active Record 未定义方法 read_attribute_for_serialization

ruby-on-rails - Rails 5 将 "."添加到 link_to 路径,而不是 "/"

html - 剪辑 box-shadow 看起来像我的例子

html - 使用一个 org-mode 文件创建多页面网站

python - 无法解析余数 : '[0]' from 'item[0]' Django

javascript - 使用 chrome 扩展更改 div 中的样式表

html - 如何让<div>、<span>或list将表格数据显示为表格?

html - CSS 最小宽度固定和百分比

javascript - 使用 local.Storage (value) 更改背景颜色