>  기사  >  백엔드 개발  >  PHP가 로컬 영역에 파일을 다운로드하는 샘플 코드에 대한 자세한 설명

PHP가 로컬 영역에 파일을 다운로드하는 샘플 코드에 대한 자세한 설명

黄舟
黄舟원래의
2017-03-14 09:46:521544검색

참고: 이 데모는 yii프레임워크에 적합합니다. yii 프레임워크를 사용하지 않는 경우에도 이 방법을 적용할 수 있습니다.

   /**
     * 保存文件到本地
     * @param 文件路径 $url
     * @param 保存本地路径 $savePath
     * @return string
     */
    public static function downloadFile($url) {
        $www_root = Yii::getPathOfAlias('webroot');
        $root_dir = 'uploads/audio';
        $build_dir = date('Y') . '/' . date('m');
        $origin_dir = $root_dir . '/' . $build_dir;
        $savePath = $www_root . DIRECTORY_SEPARATOR . $origin_dir . DIRECTORY_SEPARATOR;// 本地存放的路径(我是按照年月日来划分)
        $fileName = Common::getUrlFileExt($url);                                     // 获取文件扩展名
        if (!file_exists($savePath)) {
            Common::mkdirs($savePath);                                              //目录不存在创建目录
        }
        $fileName = time() . '.' . $fileName;
        //$file = file_get_contents($url);
        $ch = curl_init();
        $timeout = 60;
        curl_setopt($ch, CURLOPT_URL, $url);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
        curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, $timeout);
        $file_contents = curl_exec($ch);
        curl_close($ch);                                                //使用curl $ch 为返回的文件流
        if (!empty($file_contents)) {
            file_put_contents($savePath . '/' . $fileName, $file_contents);  //保存到本地的地址
            return '/' . $origin_dir . '/' . $fileName;                  //返回本地地址
        }
    }

    /**
     * 获取文件扩展名
     * @param 网页URL $url
     * @return string
     */
    public static function getUrlFileExt($url) {
        $ary = parse_url($url);
        $file = basename($ary['path']);
        $ext = explode('.', $file);
        return $ext[1];
    }
    /**
     * 创建多级目录
     */
    public static function mkdirs($dir) {
        if (!is_dir($dir)) {
            if (!Common::mkdirs(dirname($dir))) {
                return false;
            }
            if (!mkdir($dir, 0777)) {
                return false;
            }
        }
        return true;
    }
downloadFile(http://www.php.cn/);  // 调用

위 내용은 PHP가 로컬 영역에 파일을 다운로드하는 샘플 코드에 대한 자세한 설명의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.