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;
    }

转载于:https://my.oschina.net/u/3054838/blog/1982507

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值