我正在学习PHP,所以这是教育目的的问题。由于我无法在我使用的教程中找到答案,因此对您来说很清楚。
所以,想象一下我们有一个文件" text.txt"和内容是:
"Hello World!"
以下PHP脚本:
<?php
echo readfile("text.txt");
?>
将输出&#34; Hello World!12&#34; - 当这样的输出有用时,我无法想到任何情况,但我发现如果我不想在最后看到文件长度,我就省略&#34 ;回声&#34;:
<?php
readfile("text.txt");
?>
输出将是&#34; Hello World!&#34;。这是一种更好的方法,但手动说:&#34;返回从文件中读取的字节数。&#34;,所以我的问题是 - 我应该如何使用readfile()函数获取文件长度?根据我的逻辑,&#34;返回&#34;文件内容,但我觉得我没有做对。请帮我解决这个问题。
答案 0 :(得分:1)
所以你想用readfile()
读取文件的大小?当然,但这个功能也输出文件。没什么大不了的,我们可以在这种情况下使用:output buffering
。
<?php
ob_start();
$length = readfile("text.txt");
// the content of the file isn't lost as well, and you can manipulate it
$content = ob_get_clean();
echo $length;
?>
答案 1 :(得分:1)
readfile
不用于以您编写的方式获取文件大小或文件内容。它通常用于将文件发送到客户端。例如,假设您在客户提交表单或单击某个链接后在Web应用程序中创建了pdf文件。有时您可以直接将它们指向文件,但有时您出于某些原因(安全等)不希望这样。这样你可以这样做:
如何使用它。
$filepath = "../files/test.pdf";
header("Content-Description: File Transfer");
header("Content-Type: application/pdf; charset=UTF-8");
header("Content-Disposition: inline; filename='test.pdf'");
header("Content-Transfer-Encoding: binary");
header("Content-Length: " . filesize($filepath));
readfile($filepath);
exit;
您可以使用它的示例。
$filepath = "../files/test.pdf";
ob_start();
$filesize = readfile($filepath);
$content = ob_get_clean();
header("Content-Description: File Transfer");
header("Content-Type: application/pdf; charset=UTF-8");
header("Content-Disposition: inline; filename='test.pdf'");
header("Content-Transfer-Encoding: binary");
header("Content-Length: " . $filesize );
echo $content;
exit;
因此,除了正确的标题之外,您还可以输出文件内容,以便浏览器将其标识为pdf文件并打开它。