使用 AJAX 请求下载文件:综合指南
问题:尝试发起“ajax 下载请求”单击按钮后不会产生所需的结果。下面提供了 JavaScript 和 PHP 的演示:
JavaScript:
var xhr = new XMLHttpRequest(); xhr.open("GET", "download.php"); xhr.send();
PHP (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 请求启动文件下载是不可行的。对于此任务,需要直接访问该文件。
更新的解决方案(2015 年 4 月 27 日):
使用“下载”属性:
JavaScript:
// Check if 'download' is supported if ('download' in HTMLAnchorElement.prototype) { // Create an anchor element var anchor = document.createElement('a'); // Set 'download' attribute and file URL anchor.download = 'file.txt'; anchor.href = 'download.php'; // Trigger file download anchor.click(); } else { // Fallback to previous method window.location = 'download.php'; }
原始解决方案:
使用'window.location':
JavaScript :
$.ajax({ url: 'download.php', type: 'POST', success: function() { window.location = 'download.php'; } });
为了简单起见,建议避免完全使用 AJAX 请求,只需使用“window.location”即可。
以上是为什么 AJAX 不适用于文件下载,最好的替代方案是什么?的详细内容。更多信息请关注PHP中文网其他相关文章!