/** * 文件下载到本地目录 * @param $url * @return string */ function _download($url) { $folder = $this->path; set_time_limit(24 * 60 * 60); // 设置超时时间 $destination_folder = $folder . '\\'; // 文件下载保存目录,默认为当前文件目录 if(!is_dir($destination_folder)) { // 判断目录是否存在 $this->_mkdirs($destination_folder); // 如果没有就建立目录 } $newfname = $destination_folder . basename($url); // 取得文件的名称\ $file = fopen($url, "rb"); // 远程下载文件,二进制模式 if($file) { // 如果下载成功 $newf = fopen($newfname, "wb"); // 远在文件文件 if($newf) // 如果文件保存成功 while(!feof($file)) { // 判断附件写入是否完整 fwrite($newf, fread($file, 1024 * 8), 1024 * 8); // 没有写完就继续 } } if($file) { fclose($file); // 关闭远程文件 } if($newf) { fclose($newf); // 关闭本地文件 } return $newfname; } function _mkdirs($path, $mode = "0755") { if(!is_dir($path)) { // 判断目录是否存在 $this->_mkdirs(dirname($path), $mode); // 循环建立目录 mkdir($path, $mode); // 建立目录 } return true; } /** * 获取远程文件内容 * @param $url */ function _fopenUrl($url) { $file_content = ''; if(function_exists('file_get_contents')) { $file_content = @file_get_contents($url); } elseif(ini_get('allow_url_fopen') && ($file = @fopen($url, 'rb'))) { $i = 0; while(!feof($file) && $i++ < 1000) { $file_content .= strtolower(fread($file, 4096)); } fclose($file); } elseif(function_exists('curl_init')) { $curl_handle = curl_init(); curl_setopt($curl_handle, CURLOPT_URL, $url); curl_setopt($curl_handle, CURLOPT_CONNECTTIMEOUT, 2); curl_setopt($curl_handle, CURLOPT_RETURNTRANSFER, 1); curl_setopt($curl_handle, CURLOPT_FAILONERROR, 1); curl_setopt($curl_handle, CURLOPT_USERAGENT, 'Trackback Spam Check'); //引用垃圾邮件检查 $file_content = curl_exec($curl_handle); curl_close($curl_handle); } else { $file_content = ''; } return $file_content; }