首页 >web前端 >js教程 >如何通过Ajax请求触发文件下载?

如何通过Ajax请求触发文件下载?

Mary-Kate Olsen
Mary-Kate Olsen原创
2024-12-19 14:56:09897浏览

How Can I Trigger File Downloads with Ajax Requests?

使用 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中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn