我创建了一个文件传输程序,它使用 html5 分块上传文件(大约 4gb 的大文件)。每个块的大小为 100MB(我只是无缘无故地选择这个,因为我尝试使用 10MB,据我所知,它并没有任何区别)。
它正确上传每个块。但在完成上传结束时,我尝试将文件合并回 1 件,但这需要很长时间。如果我尝试刷新上传者的 web ui,它在完成合并之前将无法工作。
我的合并代码是这样的:
$final_file_path = fopen($target_path.$file_name, "ab");
//Reconstructed File
for ($i = 0; $i <= $file_total_chunk; $i++) {
$file_chunk = $target_path.$file_name.$i;
if ( $final_file_path ) {
// Read binary input stream and append it to temp file
$in = fopen($file_chunk, "rb");
if ( $in ) {
//while ( $buff = fread( $in, 1048576 ) ) {
while ( $buff = fread( $in, 104857600 ) ) {
fwrite($final_file_path, $buff);
}
}
if(fclose($in)) {
unlink($file_chunk);
}
}
}
fclose($final_file_path);
无论如何,有没有效率和快速地做到这一点。我正在使用 PHP。
谢谢