使用file_get_contents下载一部分数据?

时间:2011-12-12 22:02:21

标签: php

是否可以使用file_get_contents()下载部分数据。例如,如果我正在下载一个2MB的文本文件,而我只想要前5个字节,这可能吗?

2 个答案:

答案 0 :(得分:2)

不确定。附加参数允许您指定文件的一部分。请参见手册页上的示例#3:

<?php
// Read 14 characters starting from the 21st character
$section = file_get_contents('./people.txt', NULL, NULL, 20, 14);
var_dump($section);
?>

这里,最后两个参数限制了返回到感兴趣部分的数据量。

注意: offset 参数对于远程文件有点不可预测,如手册页中所述:

  

远程文件不支持寻找(偏移)。尝试搜索非本地文件可能会使用较小的偏移量,但这是不可预测的,因为它适用于缓冲流。

答案 1 :(得分:1)

function ranger($url, $bytes){
    $headers = array(
    "Range: bytes=0-".$bytes
    );

    $curl = curl_init($url);
    curl_setopt($curl, CURLOPT_HTTPHEADER, $headers);
    curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
    return curl_exec($curl);
}

$url = "http://example.com/textfile.txt";

$raw = ranger($url, 5);

echo $raw;

请记住,服务器必须支持Range标头。使用fgc,我认为它是impossibru,即使它是,你应该使用cURL。