最新下载
热门教程
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
php实现图片批量下载到本地实例(可采防盗链)
时间:2014-06-24 编辑:简简单单 来源:一聚教程网
对于没有防盗链的图片
代码如下 | 复制代码 |
/* * 对于没有防盗链的图片 * $url 图片地址 * $filename 图片保存地址 * return 返回下载的图片路径和名称,图片大小 */ function GrabImage($url,$filepath,$filename="") { if($url=="") return false; $ext=strrchr($url,"."); if($filename=="") { if($ext!=".gif" && $ext!=".jpg" && $ext!=".png") return false; $filename=date("YmdHis"); } ob_start(); readfile($url); $img = ob_get_contents(); ob_end_clean(); $size = strlen($img); // 图片大小 !is_dir(getcwd().$filepath)? mkdir(getcwd().$filepath):null;//生成文件夹 $fp2=fopen(getcwd().$filepath.$filename.$ext, "a"); fwrite($fp2,$img); fclose($fp2); return array($filepath.$filename.$ext,$size); } |
有防盗链的图片
代码如下 | 复制代码 |
/* * 有防盗链的图片 * $url 图片地址 * $filename 图片保存地址 * return 返回下载的图片路径和名称,图片大小 * $fromurl 来源URL,填写来源图片网址可破解防盗链 */ function GrabImage2($url,$filepath,$filename="",$fromurl) { if($url=="") return false; $ext=strrchr($url,"."); if($filename=="") { if($ext!=".gif" && $ext!=".jpg" && $ext!=".png") return false; $filename=date("YmdHis"); } !is_dir(getcwd().$filepath)? mkdir(getcwd().$filepath):null;//生成文件夹 $re = $this->curlg($url,$fromurl); $size = file_put_contents(getcwd().$filepath.$filename.$ext,$re);//返回大小 return array($filepath.$filename.$ext,$size); } |
批量采集代码:
代码如下 | 复制代码 |
/** * 批量下载图片 */ public function downimg(){ $keep = $this->_get("keep");//1从缓存获取2删除缓存/重新缓存 $id = $this->_get("id"); $id = $id?$id:0; $nextid = $id+1; if($keep!=1){ $data = M('Cjlist')->where("status=1")->select(); S("keepcjdata",$data,3600); }else{ $data = S("keepcjdata"); } $endid= count($data); //echo $id; //echo $endid; if($endid==$id){ exit('所有图片下载完成!'); } //echo $endid; $data2['cover_imgurl'] = $this->imgdown2($data[$id]['cover_imgurl']); //echo $data[$id]['thum_url']; $data2['thum_url'] = $this->imgdown2($data[$id]['thum_url'],'thum_');//中型图片type $data2['id']=$data[$id]['id']; if(!$data2['thum_url'] || !$data2['cover_imgurl']){ $data2['status']=-1; }else{ $data2['status']=2; } $res = M('Cjlist')->save($data2); //$this->echosql(); if($res){ echo '下载完成ID:'.$data2['id']." 前往下一个ID下载"; }else{ echo '保存出错,正在重试刷新。'; } //dump($data2); //dump($data); } |
同时还可以生成缩略图哦
代码如下 | 复制代码 |
/* |
相关文章
- PHP导出数据超时的优化建议解读 10-31
- PHP之mysql位运算解析 10-31
- Laravel实现登录跳转功能解析 10-31
- php双向队列解读 10-31
- Laravel异常上下文解决教程 10-24
- php数组查询元素位置方法介绍 10-24