以下代码是我的。
我想下载一个文件并在Php中一起回显。但是代码末尾的echo不起作用,如何修复这段代码?
$filename = trim($conf['savedir']).$_GET['task'].".".$_GET['hash'].".xml";
$downname = $_GET['task'].'.'.$_GET['hash'].'.xml';
$fp = fopen($filename, 'r');
if($fp == null)
{
echo "Wrong Access1";
} else {
header('Content-type:text/xml charset=utf-8');
header('Content-disposition: attachment; filename='.$downname);
header('Content-length:'.filesize($filename));
header('Content-transfer-encoding: binary');
header('Pragma: no-cache');
header('Expires: 0');
fpassthru($filename);
fclose($fp);
echo $_GET['task'].'.'.$_GET['hash'].'.xml file download.';
}
答案 0 :(得分:0)
就像@Mark Backer所说,你不能同时回应和下载相同的请求,但有一些"技巧"回应一些东西并下载文件。
假设您的问题代码位于test.php文件中,并且用户请求包含以下代码的文件:
<script type="text/javascript">
window.open('test.php?task=<?=$_GET['task']?>&hash=<?=$_GET['hash']?>', '_blank');
</script>
<?php
echo $_GET['task'].'.'.$_GET['hash'].'.xml file download.';
因此,javascript代码会将$ _GET变量传递给test.php,打开一个新窗口进行下载,并在当前窗口中回显您的消息。