文件下载保留原路径(PHP)

上一篇文章我们介绍Python保留原路径下载,
这一篇文章我们来介绍一下使用php,
如何保留原路径进行下载远程文件。

我们使用parse_url函数对文件路径进行解析处理

parse_url($url,PHP_URL_PATH)

使用Curlreadfile进行远程文件请求,获取文件:

//获取远程文件所采用的方法
if($type){
    $ch=curl_init();
    $timeout=5;
    curl_setopt($ch,CURLOPT_URL,$url);
    curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);
    curl_setopt($ch,CURLOPT_CONNECTTIMEOUT,$timeout);
    $img=curl_exec($ch);
    curl_close($ch);
}else{
    ob_start();
    readfile($url);
    $img=ob_get_contents();
    ob_end_clean();
}

完整文件下载函数(可保留原路径原文件名称下载或是自定义路径文件名称下载):

/**
 * [download_file 下载远程文件]
 * @param  [type]  $url       [远程图片地址]
 * @param  string  $save_path [保存路径(默认原始路径)]
 * @param  string  $filename  [保存文件名称(默认原始文件名)]
 * @param  integer $type      [使用的下载方式]
 * @return [type]             [description]
 */
function download_file($url,$save_path='',$filename='',$type=0){
    if (!$url)
        return array('msg'=>'图片缺失','file_name'=>'','save_path'=>'');
    if (!$save_path) {
        $save_path='.'.dirname(parse_url($url,PHP_URL_PATH));
    } elseif ($save_path==1) {
        $save_path='./';
    } else {
        $save_path = './'.trim(trim($save_path,'.'),'/');
    }
    if (!$filename) {
        $filename = basename($url);
    } elseif ($filename==1) {
        $filename = time().rand(1000,9999).strrchr($url,'.');
    } else {
        $filename = $filename;
    }
    if(0!==strrpos($save_path,'/'))
        $save_path.='/';
    //创建保存目录
    if(!file_exists($save_path)&&!mkdir($save_path,0777,true))
        return array('msg'=>'创建目录失败','file_name'=>'','save_path'=>'');
    if(file_exists($save_path.$filename))
        return array('msg'=>'该文件已存在','file_name'=>'','save_path'=>'');
    //获取远程文件所采用的方法
    if($type){
        $ch=curl_init();
        $timeout=5;
        curl_setopt($ch,CURLOPT_URL,$url);
        curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);
        curl_setopt($ch,CURLOPT_CONNECTTIMEOUT,$timeout);
        $img=curl_exec($ch);
        curl_close($ch);
    }else{
        ob_start();
        readfile($url);
        $img=ob_get_contents();
        ob_end_clean();
    }
    //$size=strlen($img);
    //文件大小
    $fp2=@fopen($save_path.$filename,'a');
    fwrite($fp2,$img);
    fclose($fp2);
    unset($img,$url);
    return array('file_name'=>$filename,'save_path'=>$save_path.$filename);
}

冯奎博客
请先登录后发表评论
  • 最新评论
  • 总共0条评论