/** * 文件下載到本地目錄 * @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; }