php下载远程文件代码(curl ,支持重定向)
2014-07-29 15:12
771 查看
/* *功能:php完美实现下载远程图片保存到本地 *参数:文件url,保存文件目录,保存文件名称,使用的下载方式 *当保存文件名称为空时则使用远程文件原来的名称 */ function getImage($url,$save_dir='',$filename='',$type=0){ if(trim($url)==''){ return array('file_name'=>'','save_path'=>'','error'=>1); } if(trim($save_dir)==''){ $save_dir='./'; } if(trim($filename)==''){//保存文件名 $ext=strrchr($url,'.'); if($ext!='.gif'&&$ext!='.jpg'){ return array('file_name'=>'','save_path'=>'','error'=>3); } $filename=time().$ext; } if(0!==strrpos($save_dir,'/')){ $save_dir.='/'; } //创建保存目录 if(!file_exists($save_dir)&&!mkdir($save_dir,0777,true)){ return array('file_name'=>'','save_path'=>'','error'=>5); } //获取远程文件所采用的方法 if($type){ $ch=curl_init(); $timeout=3; curl_setopt($ch,CURLOPT_URL,$url); curl_setopt($ch,CURLOPT_FOLLOWLOCATION,1); curl_setopt($ch,CURLOPT_RETURNTRANSFER,1); curl_setopt($ch,CURLOPT_CONNECTTIMEOUT,$timeout); $img=curl_exec($ch); //amazon https://forums.aws.amazon.com/message.jspa?messageID=196878 curl_close($ch); }else{ ob_start(); readfile($url); $img=ob_get_contents(); ob_end_clean(); } //$size=strlen($img); //文件大小 $fp2=@fopen($save_dir.$filename,'w'); fwrite($fp2,$img); fclose($fp2); unset($img,$url); return array('file_name'=>$filename,'save_path'=>$save_dir.$filename,'error'=>0); }
google 一番"php下载远程文件“ 发现上面是代码很常见对不对,但是有几个小的修改的地方,
1:增加了curl对310 302 307 的重定向支持
2:修改fopen的错误,加入fopen想打开的文件已经存在,我需要的是清空文件
相关文章推荐
- php文件下载代码(支持远程文件下载)
- 解析php多线程下载远程多个文件的实例代码
- PHP 下载远程文件类(支持断点续传)
- php使用curl下载指定大小的文件实例代码
- php支持分块与断点续传文件下载功能代码
- 关于php支持分块与断点续传文件下载功能代码
- PHP代码实现远程下载文件到本地的函数
- 分享个C++封装Libcurl代码(支持下载文件、GET\POST、重定向断点续传等功能)
- php支持分块与断点续传文件下载功能代码
- php下载远程文件类(支持断点续传)
- php下载远程文件类(支持断点续传)
- PHP代码实现远程下载文件到本地的函数
- PHP代码实现远程下载文件到本地的函数
- PHP代码实现远程下载文件到本地的函数
- php下利用curl判断远程文件是否存在的实现代码
- php实现下载远程文件的代码
- php下载远程文件(支持断点续传)