php中的readfile()函数没有打印结果

php中的readfile()函数没有打印结果,php,Php,我在我的代码中做了一个下载函数,看起来像这样,这是我从一些网站学到的关于如何下载文件的内容。这些文件是zip文件类型 header('Content-type: application/zip'); header('Content-Disposition: attachment; filename="'.basename($link).'"'); $result = readfile($link); //print $result print_r($result);exit; 我知道在标题部

我在我的代码中做了一个下载函数,看起来像这样,这是我从一些网站学到的关于如何下载文件的内容。这些文件是zip文件类型

header('Content-type: application/zip');
header('Content-Disposition: attachment; filename="'.basename($link).'"');
$result = readfile($link);

//print $result
print_r($result);exit;
我知道在标题部分缺少了一些东西,但让我们把它留给那个。我的问题是,每当我打印
$result
,我都没有收到任何消息。它只是下载了文件,没有打印
readfile
函数响应。我想得到回复,这样我就能知道文件下载是否已经完成。有人知道为什么没有反应吗

更新:我以脚本的形式使用它,因此页面中没有显示单击和下载链接的选项。当我访问URL时,它会自动下载我在代码中静态提供的链接

非常感谢您的帮助。

发件人:

读取文件并将其写入输出缓冲区

返回值

返回从文件中读取的字节数。如果发生错误, 返回
FALSE
,除非函数被调用为@readfile(), 将打印一条错误消息

您有一个二进制文件:

header('Content-type: application/zip');
如果您在zip文件的中间注入函数返回的字节数,您将损坏它。

我将用一个148字节的小ZIP来说明:

<?php
$link = __DIR__ . '/foo.zip';
header('Content-type: application/zip');
header('Content-Disposition: attachment; filename="'.basename($link).'"');
$result = readfile($link);
print_r($result);
exit;

它不是这样工作的。你要么显示页面,要么下载文件,两者同时进行是不可能的,但我应该怎么做?@G.Curs我建议你使用下载页面,然后通过Ajax调用下载这意味着什么-下载完成?当用户同意下载时,可以按
cancel
,然后是什么?@u\u mulder,没有用户与此交互。我只是想检查下载是否完成。谢谢@Alvaro,但是返回的值没有打印出来。为什么会这样?好吧,我们只有你的话,你正在打印它,你还没有展示如何。但在二进制文件中查找内容可能很棘手。您是否使用十六进制编辑器,例如?我这样打印:
print\r($result)
,我还更新了我的问题。我也不知道你提到的那个编辑。@G.Curs我已经扩展了我的答案,希望现在更清楚。