使用卷曲下载和使用file_put_contents将文件保存到磁盘,功能的帮助:
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;
}
如何使用功能:
$url_image = 'http://img.youtube.com/vi/' . $videoID . '/sddefault.jpg';
$imgcontents = (curl_get($url_image));
file_put_contents($videoID . '.jpg', $imgcontents);
试试这个可能性ly http://stackoverflow.com/questions/724391/saving-image-from-php-url-using-php –
这工作完美,谢谢@php_nub_qq – bryan
不要谢谢我,谢谢@vartec':D' –