rails 中的 send_file 不会下载到浏览器 - 而是直接在浏览器 window 中加载
send_file in rails does not download to browser - instead loads in browser window directly
我的 .erb 中有以下内容:
<%= link_to 'Download PDF', planners_download_pdf_url %>
我有以下回复方式:
def download_pdf
send_file(
"#{Rails.root}/Thing/ex/example.xls",
filename: "mything.xls",
type: "application/xls"
)
end
我的路线有:
get '/planners/download_pdf'
当我单击我的 link 时,该方法会被调用。我的问题是没有下载到浏览器。相反,它使用我在浏览器中打开的选项卡并将文件转储为 HTML。比如...您见过用记事本打开 Excel 文件吗?它就是这样做的。见下文:
我如何获取此文件而不是下载文件?
您需要将 disposition: 'attachment'
添加到您的 send_file
选项哈希(或者至少确保您没有设置 disposition: 'inline'
,因为 'attachment'
应该是默认值).
如果这不是问题,如果您正在使用 Turbolinks,如 other answers you need to disable Turbolinks on the link 中所述,通过在 link 元素中设置 data-turbolinks="false"
(例如: data: {turbolinks: false}
在你的 link_to
标签助手中)。
最后,如果这不起作用,还可以尝试其他一些方法:
- 将
type
设置为 'application/vnd.ms-excel'
,XLS 文件的有效 MIME 类型。
- 直接在 link 标签上设置
download="mything.xls"
html5 attribute(例如:download: 'mything.xls'
在您的 link_to
标签助手中。
我的 .erb 中有以下内容:
<%= link_to 'Download PDF', planners_download_pdf_url %>
我有以下回复方式:
def download_pdf
send_file(
"#{Rails.root}/Thing/ex/example.xls",
filename: "mything.xls",
type: "application/xls"
)
end
我的路线有:
get '/planners/download_pdf'
当我单击我的 link 时,该方法会被调用。我的问题是没有下载到浏览器。相反,它使用我在浏览器中打开的选项卡并将文件转储为 HTML。比如...您见过用记事本打开 Excel 文件吗?它就是这样做的。见下文:
我如何获取此文件而不是下载文件?
您需要将 disposition: 'attachment'
添加到您的 send_file
选项哈希(或者至少确保您没有设置 disposition: 'inline'
,因为 'attachment'
应该是默认值).
如果这不是问题,如果您正在使用 Turbolinks,如 other answers you need to disable Turbolinks on the link 中所述,通过在 link 元素中设置 data-turbolinks="false"
(例如: data: {turbolinks: false}
在你的 link_to
标签助手中)。
最后,如果这不起作用,还可以尝试其他一些方法:
- 将
type
设置为'application/vnd.ms-excel'
,XLS 文件的有效 MIME 类型。 - 直接在 link 标签上设置
download="mything.xls"
html5 attribute(例如:download: 'mything.xls'
在您的link_to
标签助手中。