使用 Ajax 请求下载文件
使用 Ajax 实现单击按钮即可下载文件的功能可能会遇到挑战。让我们探索克服这些障碍的解决方案。
初始尝试
实现这一目标的初始尝试包括创建 XMLHttpRequest 并向 PHP 脚本发送 GET 请求,如下所示显示如下:
javascript: var xhr = new XMLHttpRequest(); xhr.open("GET", "download.php"); xhr.send(); download.php: <? header("Cache-Control: public"); header("Content-Description: File Transfer"); header("Content-Disposition: attachment; filename= file.txt"); header("Content-Transfer-Encoding: binary"); readfile("file.txt"); ?>
限制
但是,由于浏览器的限制,此方法存在不足。 Ajax请求不能直接触发下载提示;相反,必须导航到该文件才能发生。
解决方案
有两种方法可用:
1。使用 window.location 和 Fallback
利用 window.location 属性导航到下载脚本,触发下载:
$.ajax({ url: 'download.php', type: 'POST', success: function() { window.location = 'download.php'; } });
2. HTML5 下载属性
对于现代浏览器,可以使用 HTML5 下载属性:
<a href="download.php" download> Download File </a>
注意:
- 下载属性仅在 Chrome、Firefox 及更高版本的 Internet 中支持Explorer.
-确保要下载的文件与主页同源。
以上是如何通过Ajax请求触发文件下载?的详细内容。更多信息请关注PHP中文网其他相关文章!