要实现断点续传功能,可以通过设置文件流的偏移量来实现。以下是使用file_get_contents函数实现断点续传的示例代码:
$url = 'http://example.com/large_file.zip';
$localFile = 'local_file.zip';
$offset = 0;
if (file_exists($localFile)) {
$offset = filesize($localFile);
}
$context = stream_context_create([
'http' => [
'header' => 'Range: bytes=' . $offset . '-'
]
]);
$file = fopen($url, 'rb', false, $context);
if ($file) {
file_put_contents($localFile, '');
$localFileResource = fopen($localFile, 'ab');
while (!feof($file)) {
fwrite($localFileResource, fread($file, 1024));
}
fclose($file);
fclose($localFileResource);
}
echo "Download complete.";
在这个示例中,我们首先检查本地文件是否存在,并获取其大小作为偏移量。然后,我们创建一个包含Range头信息的流上下文,并使用file_get_contents函数打开远程文件。接着,我们将远程文件的内容逐个读取并写入本地文件中,实现断点续传功能。最后,我们关闭文件流并输出下载完成的消息。