/* * 功能:php完美实现下载远程图片保存到本地 * 参数:文件url,保存文件目录,保存文件名称,使用的下载方式 * 当保存文件名称为空时则使用远程文件原来的名称 */ function getImage($url, $save_dir, $filename = '', $type = 0) { // echo $url." "; // echo $save_dir." "; // echo $filename." "; // return false; if (trim($url) == '') { return array( 'file_name' => '', 'save_path' => '', 'error' => 1 ); } // if(trim($save_dir)==''){ // $save_dir='./'; // } if (trim($filename) == '') { // 保存文件名 $ext = strrchr($url, '.'); if ($ext != '.gif' && $ext != '.jpg') { return array( 'file_name' => '', 'save_path' => '', 'error' => 3 ); } // $filename=time().$ext; // $filename = strrchr($url, '/'); $pos = strrpos($url, "/"); if ($pos > 0) { $filename = substr($url, $pos + 1); echo $filename . " "; } } if (0 !== strrpos($save_dir, '/')) { $save_dir .= '/'; } // 创建保存目录 if (! file_exists($save_dir) && ! mkdir($save_dir, 0777, true)) { return array( 'file_name' => '', 'save_path' => '', 'error' => 5 ); } // 获取远程文件所采用的方法 if ($type) { $ch = curl_init(); $timeout = 5; curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, $timeout); $img = curl_exec($ch); curl_close($ch); } else { ob_start(); readfile($url); $img = ob_get_contents(); ob_end_clean(); } // $size=strlen($img); // 文件大小 $fp2 = @fopen($save_dir . $filename, 'a'); fwrite($fp2, $img); fclose($fp2); unset($img, $url); return array( 'file_name' => $filename, 'save_path' => $save_dir . $filename, 'error' => 0 ); }