我在表单标签中有一个按钮,它生成一个 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/