在 PHP 中使用 fread 无法读取少于 1024 字节 (1KB)
Unable to read less than 1024 bytes (1KB) with fread in PHP
我想在 PUT 请求中读取一个文件。正如 PHP 文档中所建议的那样:
<?php
/* PUT data comes in on the stdin stream */
$putdata = fopen("php://input", "r");
/* Open a file for writing */
$fp = fopen("myputfile.ext", "w");
/* Read the data 1 KB at a time
and write to the file */
while ($data = fread($putdata, 1024))
fwrite($fp, $data);
/* Close the streams */
fclose($fp);
fclose($putdata);
?>
但是当发送的文件小于 1 KB 时,它不会读取。有谁知道 PHP 中 fread 的这种特定行为?
谢谢!
即使 while 条件更改为
while($data=fread($putdata, 512))
,它不进入循环。我不知道它的具体行为,但是 fread 是否不支持小于 1024 的块?只是好奇!
stream_get_contents($fp) 成功了!它一次性将一个已经打开的流(在本例中为 $fp)的内容作为字符串返回。
谢谢大家的建议:)
我想在 PUT 请求中读取一个文件。正如 PHP 文档中所建议的那样:
<?php
/* PUT data comes in on the stdin stream */
$putdata = fopen("php://input", "r");
/* Open a file for writing */
$fp = fopen("myputfile.ext", "w");
/* Read the data 1 KB at a time
and write to the file */
while ($data = fread($putdata, 1024))
fwrite($fp, $data);
/* Close the streams */
fclose($fp);
fclose($putdata);
?>
但是当发送的文件小于 1 KB 时,它不会读取。有谁知道 PHP 中 fread 的这种特定行为? 谢谢!
即使 while 条件更改为
while($data=fread($putdata, 512))
,它不进入循环。我不知道它的具体行为,但是 fread 是否不支持小于 1024 的块?只是好奇!
stream_get_contents($fp) 成功了!它一次性将一个已经打开的流(在本例中为 $fp)的内容作为字符串返回。 谢谢大家的建议:)