Python/PHP 远程文件/图片 下载
php 实现远程图片下载并保存到本地
/* *功能: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=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_dir.$filename,'a'); fwrite($fp2,$img); fclose($fp2); unset($img,$url); return array('file_name'=>$filename,'save_path'=>$save_dir.$filename,'error'=>0); } $file_url = "https://img3.doubanio.com/view/photo/s_ratio_poster/public/p1910813120.jpg"; getImage($file_url);
注意下载路径需要有写入的权限
运行程序后会将图片保存到当前路径下,如图:
Python 实现远程图片下载并保存到本地
def save_img(url): import requests import os file_name = url.split("/")[-1] try: r = requests.get(url) except: print("远程连接错误") return -1 try: if not os.path.exists("movie"): os.makedirs("movie") os.chdir("movie") with open(file_name, 'wb') as f: f.write(r.content) except: print("文件保存错误") return -1 if save_img(url) == -1: print("Download Error") else: print("Download Succeed!")
判断当前路径下是否存在 movie 文件夹,不存在则创建;
切换到 movie 文件夹下;
将远程图片以二进制文件的形式写入;
执行成功后会在当前路径下生成一个 movie/p1910813120.jpg