尝试在我的NodeJS服务器上创建文件下载功能时,我遇到了一些意外的行为.
我有一个REST(快速)API,它需要一些导出数据功能,它在服务器上创建一个CSV文件并使用res.download(‘path / to / file’)来触发下载.
响应头包括
Content-Disposition:attachment; filename="indicators.csv"
Content-Length:30125
Content-Type:text/csv; charset=UTF-8
所以一切似乎都井然有序.
问题是,我从服务器得到的响应是纯文本.响应包含CSV文件包含的所有数据,但不会像我预期的那样触发浏览器的文件下载对话框.
我在Chrome和FF上都试过了.两者都存在问题.
有任何想法吗?
更新
我设法通过创建一个虚拟表单,并使用其提交操作来进行我的AJAX调用来使其工作.但这是一个丑陋的黑客,我仍然在寻找一个更优雅的解决方案.
解决方法:
标题不是问题.问题是您通过ajax调用查询下载URL,该调用不会调用浏览器下载对话框.您的选项可归结为以下内容:
>使用提交到您的下载URL的表单.用户不必使用可见的表单进行交互,而是使用JavaScript创建表单并通过调用form.submit – Handle file download from ajax post以编程方式提交表单.
>将window.location指向下载网址.您可以在当前窗口中执行此操作 – download file using an ajax request,或者在新窗口中执行此操作 – res.download() not working in my case
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。