PHP 下載文件&獲取文件內容

/**
     * 文件下載到本地目錄
     * @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;
    }
相關文章
相關標籤/搜索