我正在使用此PHP代码开始下载,但希望在开始下载之前/之后显示“HTML”,但以下代码会产生一个空白页:
输出html的功能:
function writeMsg($msg)
{
echo "<html><body><h2>$msg</h2></body></html>";
}
使用:
调用if(file_exists ($fullpath)) {
//Start Download
ob_start();
writeMsg('Download Started');
header("Content-Type: application/octet-stream");
header("Content-Disposition: attachment; filename=\"$fname\"");
header("Content-Transfer-Encoding: binary");
header('Connection: close');
ob_end_flush();
exit();
}
答案 0 :(得分:1)
这是不可能的,因为您将头类型设置为application / octet-stream,这意味着它是必须使用应用程序打开的二进制文件。
相反,您可以显示文本,然后使用HTML或Javascript重定向用户
在HTML中,您可以使用以下
<META http-equiv="refresh" content="NUMBER_OF_SECONDS_HERE; URL=DOWNLOAD_LINK_HERE">
答案 1 :(得分:1)
试试这个。如果不显示内联文本,您可能需要一个模式来显示加载文本。
HTML MARK UP
<a href="#" id="d1">Download Now</a>
// Jquery
$(function(){
$('#d1').click(function(){
$(this).text('Download Started...');
setTimeout(function(){
window.location.replace('http://domain.com/download.php');
},2000);
return false;
})
});
答案 2 :(得分:0)
这只能在客户端使用javascript来完成我现在正在使用它:https://github.com/johnculviner/jquery.fileDownload
jQuery File Download是一个兼容跨服务器平台的jQuery 插件,允许类似Ajax的文件下载体验 通常不可能使用网络。