温馨提示×

file_get_contents在php中如何实现断点续传功能

PHP
小樊
84
2024-08-15 05:21:38
栏目: 编程语言

要实现断点续传功能,可以通过设置文件流的偏移量来实现。以下是使用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函数打开远程文件。接着,我们将远程文件的内容逐个读取并写入本地文件中,实现断点续传功能。最后,我们关闭文件流并输出下载完成的消息。

0