说我正在上传一个分块的文件,我必须重新组合它。我知道每次迭代的总块和数据。
我创建了这样的代码:
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文档,但听不懂。谁能解释给我,我该如何选择这种可怕的参数?事情如何运作?
答案 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);