在PHP中无法读取小于1024字节(1KB)的fread

时间:2015-08-14 13:08:52

标签: php put fread

我想在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的块?好奇!

1 个答案:

答案 0 :(得分:0)

stream_get_contents($ fp)工作了!它一次性将一个已打开的流(在本例中为$ fp)的内容作为字符串返回。 谢谢大家的建议:)