首页 > 后端开发 > php教程 > 如何使用 AJAX 触发文件下载:直接下载或服务器端重定向?

如何使用 AJAX 触发文件下载:直接下载或服务器端重定向?

Mary-Kate Olsen
发布: 2024-12-17 00:12:24
原创
901 人浏览过

How to Trigger a File Download Using AJAX:  Direct Download or Server-Side Redirect?

使用 AJAX 请求下载文件

当尝试在按钮单击时启动“ajax 下载请求”时,通常会实现如下代码下面:

var xhr = new XMLHttpRequest();
xhr.open("GET", "download.php");
xhr.send();
登录后复制

以及以下 PHP script:

<?
header("Cache-Control: public");
header("Content-Description: File Transfer");
header("Content-Disposition: attachment; filename= file.txt");
header("Content-Transfer-Encoding: binary");    
readfile("file.txt");
?>
登录后复制

但是,这种方法可能不会产生预期的结果。要有效地启动下载,请考虑实施以下替代方案之一:

选项 1:利用“下载”属性

在 Firefox 和 Chrome 等现代浏览器中, “download”属性提供了一种从网页内启动下载的便捷方法,无需服务器端交互。下面是一个示例:

<a href="file.txt" download="file.txt">Download</a>
登录后复制

选项 2:使用 AJAX 或 Window.location 导航到下载脚本

如果“下载”属性不合适选项,您可以使用 AJAX 或 window.location 导航到下载脚本。使用 AJAX,您可以执行异步请求,然后使用其成功回调函数重定向到下载脚本:

$.ajax({
    url: 'download.php',
    type: 'POST',
    success: function() {
        window.location = 'download.php';
    }
});
登录后复制

或者,您可以简单地使用 window.location 导航到下载脚本:

window.location = 'download.php';
登录后复制

虽然 AJAX 方法提供了一定的灵活性,但使用 window.location 通常更高效、更简单。

以上是如何使用 AJAX 触发文件下载:直接下载或服务器端重定向?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板