
正文
Python/PHP 远程文件/图片 下载
提示:扫一扫查出行【扫一扫了解最新限行尾号】
复制提示
php 实现远程图片下载并保存到本地
/*
*功能:php完美实现下载远程图片保存到本地
*参数:文件url,保存文件目录,保存文件名称,使用的下载方式
*当保存文件名称为空时则使用远程文件原来的名称
*/
function getImage($url,$save_dir='',$filename='',$type=){
if(trim($url)==''){
return array('file_name'=>'','save_path'=>'','error'=>);
}
if(trim($save_dir)==''){
$save_dir='./';
}
if(trim($filename)==''){//保存文件名
$ext=strrchr($url,'.');
if($ext!='.gif'&&$ext!='.jpg'){
return array('file_name'=>'','save_path'=>'','error'=>);
}
$filename=time().$ext;
}
if(!==strrpos($save_dir,'/')){
$save_dir.='/';
}
//创建保存目录
if(!file_exists($save_dir)&&!mkdir($save_dir,,true)){
return array('file_name'=>'','save_path'=>'','error'=>);
}
//获取远程文件所采用的方法
if($type){
$ch=curl_init();
$timeout=;
curl_setopt($ch,CURLOPT_URL,$url);
curl_setopt($ch,CURLOPT_RETURNTRANSFER,);
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'=>);
}
$file_url = "https://img3.doubanio.com/view/photo/s_ratio_poster/public/p1910813120.jpg";
getImage($file_url);
/*
*功能:php完美实现下载远程图片保存到本地
*参数:文件url,保存文件目录,保存文件名称,使用的下载方式
*当保存文件名称为空时则使用远程文件原来的名称
*/
function getImage($url,$save_dir='',$filename='',$type=){
if(trim($url)==''){
return array('file_name'=>'','save_path'=>'','error'=>);
}
if(trim($save_dir)==''){
$save_dir='./';
}
if(trim($filename)==''){//保存文件名
$ext=strrchr($url,'.');
if($ext!='.gif'&&$ext!='.jpg'){
return array('file_name'=>'','save_path'=>'','error'=>);
}
$filename=time().$ext;
}
if(!==strrpos($save_dir,'/')){
$save_dir.='/';
}
//创建保存目录
if(!file_exists($save_dir)&&!mkdir($save_dir,,true)){
return array('file_name'=>'','save_path'=>'','error'=>);
}
//获取远程文件所采用的方法
if($type){
$ch=curl_init();
$timeout=;
curl_setopt($ch,CURLOPT_URL,$url);
curl_setopt($ch,CURLOPT_RETURNTRANSFER,);
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'=>);
} $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("/")[-]
try:
r = requests.get(url)
except:
print("远程连接错误")
return -
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 -
if save_img(url) == -:
print("Download Error")
else:
print("Download Succeed!")
def save_img(url):
import requests
import os
file_name = url.split("/")[-]
try:
r = requests.get(url)
except:
print("远程连接错误")
return -
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 -
if save_img(url) == -:
print("Download Error")
else:
print("Download Succeed!")
判断当前路径下是否存在 movie 文件夹,不存在则创建;
切换到 movie 文件夹下;
将远程图片以二进制文件的形式写入;
执行成功后会在当前路径下生成一个 movie/p1910813120.jpg






