On hosts with safe_mode turned on, it can be difficult to get remote files with a system call to wget or curl. Here is a PHP function that will get a file with an HTTP GET. I use it to download remote images. It returns the binary data in a variable that can be written to a file.
function http_get_file($url) {
$url_stuff = parse_url($url);
$port = isset($url_stuff['port']) ? $url_stuff['port']:80;
$fp = fsockopen($url_stuff['host'], $port);
$query = 'GET ' . $url_stuff['path'] . " HTTP/1.0\n";
$query .= 'Host: ' . $url_stuff['host'];
$query .= "\n\n";
fwrite($fp, $query);
while ($line = fread($fp, 1024)) {
$buffer .= $line;
}
preg_match('/Content-Length: ([0-9]+)/', $buffer, $parts);
return substr($buffer, - $parts[1]);
}
?>
Original function found on php.net
Popularity: 39% [?]
What about 2GB file download. I don’t think $buffer variable is able to handle this much of binary data and then save later on disk.. do you have any idea about this.. please share..
How to read excel data with php ?
Why not just do file_get_contents() ?
how can i downlaod file using PHP??
wat is the code/script for it??
please help me..
Salamo Alikom
@iallien
use curl ,it is more easy since the knowledge of HTTP protocol is optional .
Yes cURL would be easier, but the caveat in the first sentence of the post is that this is a workaround when cURL is not available on the host or other security features prevent other methods of downloading a remote file.
Back in 2005 when this was written, cURL was not as standard as it is now.