Use CURL to download and use file_put_contents to save the file to disk, function to help:
function gzipdecode( $data, &$filename = '', &$error = '', $maxlength = null ) {
$len = strlen( $data );
if ( $len < 18 || strcmp( substr( $data, 0, 2 ), "\x1f\x8b" ) ) {
$error = "Not in GZIP format.";
return $data;
}
$method = ord( substr( $data, 2, 1 ) );
$flags = ord( substr( $data, 3, 1 ) );
if ( $flags & 31 != $flags ) {
$error = "Reserved bits not allowed.";
return $data;
}
$mtime = unpack( "V", substr( $data, 4, 4 ) );
$mtime = $mtime[1];
$xfl = substr( $data, 8, 1 );
$os = substr( $data, 8, 1 );
$headerlen = 10;
$extralen = 0;
$extra = "";
if ( $flags & 4 ) {
if ( $len - $headerlen - 2 < 8 ) {
return $data;
}
$extralen = unpack( "v", substr( $data, 8, 2 ) );
$extralen = $extralen[1];
if ( $len - $headerlen - 2 - $extralen < 8 ) {
return $data;
}
$extra = substr( $data, 10, $extralen );
$headerlen += 2 + $extralen;
}
$filenamelen = 0;
$filename = "";
if ( $flags & 8 ) {
if ( $len - $headerlen - 1 < 8 ) {
return $data;
}
$filenamelen = strpos( substr( $data, $headerlen ), chr( 0 ) );
if ( $filenamelen === false || $len - $headerlen - $filenamelen - 1 < 8 ) {
return $data;
}
$filename = substr( $data, $headerlen, $filenamelen );
$headerlen += $filenamelen + 1;
}
$commentlen = 0;
$comment = "";
if ( $flags & 16 ) {
if ( $len - $headerlen - 1 < 8 ) {
return $data;
}
$commentlen = strpos( substr( $data, $headerlen ), chr( 0 ) );
if ( $commentlen === false || $len - $headerlen - $commentlen - 1 < 8 ) {
return $data;
}
$comment = substr( $data, $headerlen, $commentlen );
$headerlen += $commentlen + 1;
}
$headercrc = "";
if ( $flags & 2 ) {
if ( $len - $headerlen - 2 < 8 ) {
return $data;
}
$calccrc = crc32( substr( $data, 0, $headerlen ) ) & 0xffff;
$headercrc = unpack( "v", substr( $data, $headerlen, 2 ) );
$headercrc = $headercrc[1];
if ( $headercrc != $calccrc ) {
$error = "Header checksum failed.";
return $data;
}
$headerlen += 2;
}
$datacrc = unpack( "V", substr( $data, -8, 4 ) );
$datacrc = sprintf( '%u', $datacrc[1] & 0xFFFFFFFF );
$isize = unpack( "V", substr( $data, -4 ) );
$isize = $isize[1];
$bodylen = $len - $headerlen - 8;
if ( $bodylen < 1 ) {
return $data;
}
$body = substr( $data, $headerlen, $bodylen );
$data = "";
if ( $bodylen > 0 ) {
switch ( $method ) {
case 8:
$data = gzinflate( $body, $maxlength );
break;
default:
$error = "Unknown compression method.";
return $data;
}
}
$crc = sprintf( "%u", crc32( $data ) );
$crcOK = $crc == $datacrc;
$lenOK = $isize == strlen( $data );
if ( !$lenOK || !$crcOK ) {
$error = ( $lenOK ? '' : 'Length check FAILED. ' ) . ( $crcOK ? '' : 'Checksum FAILED.' );
return $data;
}
return $data;
}
function curl_get( $url ) {
$curl_init = curl_init();
curl_setopt( $curl_init, CURLOPT_CONNECTTIMEOUT, 10 );
if ( ini_get( 'open_basedir' ) == '' && ( ini_get( 'safe_mode' ) === false || ini_get( 'safe_mode' ) === '' || ini_get( 'safe_mode' ) === 'Off' ) ) {
curl_setopt( $curl_init, CURLOPT_FOLLOWLOCATION, true );
} else {
curl_setopt( $curl_init, CURLOPT_FOLLOWLOCATION, false );
}
curl_setopt( $curl_init, CURLOPT_HEADER, false );
curl_setopt( $curl_init, CURLOPT_HTTPGET, true );
curl_setopt( $curl_init, CURLOPT_POST, false );
curl_setopt( $curl_init, CURLOPT_RETURNTRANSFER, true );
curl_setopt( $curl_init, CURLOPT_SSL_VERIFYHOST, false );
curl_setopt( $curl_init, CURLOPT_SSL_VERIFYPEER, false );
curl_setopt( $curl_init, CURLOPT_URL, $url );
curl_setopt( $curl_init, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/30.0.1599.69 Safari/537.36' );
curl_setopt( $curl_init, CURLOPT_VERBOSE, true );
$contents = curl_exec( $curl_init );
if ( function_exists( 'gzipdecode' ) ) {
$contents = gzipdecode( $contents );
}
curl_close( $curl_init );
return $contents;
}
How to use the function:
$url_image = 'http://img.youtube.com/vi/' . $videoID . '/sddefault.jpg';
$imgcontents = ( curl_get( $url_image ) );
file_put_contents( $videoID . '.jpg', $imgcontents );