快速问题:我有一个强制用户输入电子邮件的表单,然后推送下载/附件并下载文件...文件下载正常...但是......
我的问题是,当下载开始时,页面会锁定,用户无法在任何地方导航或在页面上执行任何操作,直到下载文件(即:单击下面的“回家”链接)。有什么比我在这里提出的更好的解决方案?我知道我可能错过了一些非常简单的东西......这是我在设置私人下载页面时的第一次破解。
<script type="text/javascript">
function redirect_function(loc){
window.location = loc;
}
</script>
<?php
// after form is submitted
$condition_met=check($_POST['email']);
if($condition_met) { ?>
<p>Your file will begin downloading in 5 seconds.</p> <a>go home</a>
<script type="text/javascript">
setTimeout('redirect_function("download.php")', 5000);
</script>
<?php } ?>
被叫(download.php)页面看起来像这样,这是它挂起页面的地方......
<?php
ob_start();
if($some_condition) { // check for authorization, etc
$file='location/file.ext';
header('Content-type: application/force-download');
header('Content-disposition: attachment; filename="'. basename($file) .'"');
header('Content-length: '. filesize($file) );
readfile( $file );
} else {
echo "error message";
}
ob_end_flush();
?>
答案 0 :(得分:1)
取出输出缓冲区。 Readfile()将逐步弹出数据,但是输出缓冲区会捕获所有数据,直到它进入刷新状态。
答案 1 :(得分:0)
几乎在那里,您需要将内容类型更改为
application/force-download