Php 通过单击按钮下载文件
这是HTML:Php 通过单击按钮下载文件,php,jquery,Php,Jquery,这是HTML: <button name="download">Download</button> 其中download.php是: if (file_exists($myFile)){ header ("Content-Type: application/json"); header ("Content-Disposition: attachment; filename=$fileName"); header("Cont
<button name="download">Download</button>
其中download.php是:
if (file_exists($myFile)){
header ("Content-Type: application/json");
header ("Content-Disposition: attachment; filename=$fileName");
header("Content-Length: " . filesize("$myFile"));
$fp = fopen("$myFile", "r");
fpassthru($fp);
} else {
echo "no file exists";
};
这不会输出任何内容,也不会下载任何文件。我知道PHP脚本正在工作并正在被调用。不要使用AJAX下载文件。并不是它不能发出请求并接收响应,只是它没有任何有意义的方法来处理响应 另一方面,浏览器本身也会这样做 因此,您可以直接将浏览器指向请求:
$parent.find('button[name=download]').click(function () {
window.location.href = 'download.php';
});
如果download.php
正在发送内容处置:附件的响应代码>则不会以任何方式卸载或修改页面。浏览器将完全独立于当前页面上下文处理此请求的响应,并且在处理响应后,该页面上下文将保持不变
(当然,除非浏览器配置为对该响应执行某些操作,例如始终显示该响应而不是提示保存该响应。但在代码中您对此无能为力。)
事实上,在这一点上,完全删除JavaScript并使其成为一个普通链接更有意义,这将完成同样的事情:
<a href="download.php">Download</a>
您可以将其样式设置为按钮,这可能比运行JavaScript代码的实际按钮更容易访问。(如果浏览器没有启用JavaScript,那么按钮就没用了,但是链接可以正常工作。)不要使用AJAX下载文件。并不是它不能发出请求并接收响应,只是它没有任何有意义的方法来处理响应
另一方面,浏览器本身也会这样做
因此,您可以直接将浏览器指向请求:
$parent.find('button[name=download]').click(function () {
window.location.href = 'download.php';
});
如果download.php
正在发送内容处置:附件的响应代码>则不会以任何方式卸载或修改页面。浏览器将完全独立于当前页面上下文处理此请求的响应,并且在处理响应后,该页面上下文将保持不变
(当然,除非浏览器配置为对该响应执行某些操作,例如始终显示该响应而不是提示保存该响应。但在代码中您对此无能为力。)
事实上,在这一点上,完全删除JavaScript并使其成为一个普通链接更有意义,这将完成同样的事情:
<a href="download.php">Download</a>
您可以将其样式设置为按钮,这可能比运行JavaScript代码的实际按钮更容易访问。(如果浏览器没有启用JavaScript,那么按钮将无效,但是链接可以正常工作。)不要发送ajax请求。只需重定向到下载。或者更好的方法是,将按钮设置为锚定标记并删除javascript。可能的重复项不发送ajax请求。只需重定向到下载。或者更好的方法是,将按钮作为锚定标记并删除javascript。可能是它的副本!我删除了AJAX,但保留了click处理程序,以便向用户提供一条简短的反馈消息,感谢您的帮助!就这样!我删除了AJAX,但保留了click处理程序,以便向用户提供一条简短的反馈消息,感谢您的帮助!