我有问题,我的代码如下。
<?php
if(empty($_POST['download_button']) === false && isset($_POST['download_button'])){
header('Content-Description: File Transfer');
header('Content-Type: application/octet-stream');
header('Content-Type: application/octetstream');
header('Content-Disposition: attachment; filename="'.$file_real_name.'"');
header('Content-Transfer-Encoding: binary');
header('Expires: 0');
header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
header('Pragma: public');
header('Content-Length: ' . (int)(filesize($file_path)));
ob_clean();
flush();
readfile($file_path);
}
?>
<form action="" method="post">
<input type="submit" name="download_button" value="Download"" />
</form>
这是我目前的代码,但我不想要提交按钮。我想要一个正常的按钮或一个空白的链接,将开始下载。我已经看到许多网站这样做。我认为在javascript的帮助下。有谁可以在这帮忙? 我不希望用户知道文件服务器上的随机名称或位置。
我的意思是说还有其他方法可以通过javascript或jquery向php发送下载请求下载并且下载开始而不提交表单。?
答案 0 :(得分:1)
使用$ _GET使用超链接而不是提交按钮。
<?php
if(isset($_GET['download']) && $_GET['download']){
header('Content-Description: File Transfer');
header('Content-Type: application/octet-stream');
header('Content-Type: application/octetstream');
header('Content-Disposition: attachment; filename="'.$file_real_name.'"');
header('Content-Transfer-Encoding: binary');
header('Expires: 0');
header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
header('Pragma: public');
header('Content-Length: ' . (int)(filesize($file_path)));
ob_clean();
flush();
readfile($file_path);
}
?>
<a href="?download=true">Download</a>
答案 1 :(得分:1)
$ _GET之外的替代路线: 使用jquery你可以有一个调用javascript函数的链接, 然后你可以动态访问一个PHP文件。这也不需要刷新页面
function buttonClicked()
{
$.ajax({
url:'downloadpage.php',
data:{'filename':'name of file'},
type:'post')};
}
<a onclick="buttonClicked()">Download now</a>