正确的fread()应用程序?

时间:2018-10-16 16:28:53

标签: php file file-upload fread chunks

说我正在上传一个分块的文件,我必须重新组合它。我知道每次迭代的总块和数据。

我创建了这样的代码:

for ($i = 1; $i <= $num_chunks; $i++) {

  $file = fopen($target_file.$i, 'rb');
  $buff = fread($file, 2097152);
  fclose($file);

  $final = fopen($target_file, 'ab');
  $write = fwrite($final, $buff);
  fclose($final);

  unlink($target_file.$i);
}

至少对我来说,显然2097152的值没有任何意义。我读了php文档,但听不懂。谁能解释给我,我该如何选择这种可怕的参数?事情如何运作?

1 个答案:

答案 0 :(得分:1)

第二个参数是要读取的数据量,因为在一个块中读取该数据,必须确保它足以处理任何块。设置的值为2MB,可能就足够了,但是您可以更改代码,以便它以较小的块读取并循环读取,直到完全读取输入为止。

我还更改了它以一次打开输出文件,然后随便写内容...

$final = fopen($target_file, 'wb');   // Open for write and start from beginning of file
for ($i = 1; $i <= $num_chunks; $i++) {
  $file = fopen($target_file.$i, 'rb');
  while($buff = fread($file, 4096))  {
      fwrite($final, $buff);
  }
  fclose($file);

  unlink($target_file.$i);
}
fclose($final);