php批量下载图片

admin10年前技术文档1661
假如现在我现在发现一个网站上的图片保存方式是1001 – 1999目录下都存放着从1开始(数量不等)的.jpg图片,现在我决定用php的方法将图片按照自己需要的样式直接下载到本地
 
假如图片开始地址为:http://image.xxx.com/img/1001/1.jpg
这时我将1001处放到变量$id,1.jpg放到变量$num.jpg,保存的文件名为$id_$num.jpg
首先确保在此文件执行目录下面建一个名为img的并且可写的文件夹
<?php
$id= isset($_GET['id']) && intval($_GET['id']) && $_GET['id']>1000 ? $_GET['id'] : 1001;
$num= isset($_GET['num']) && intval($_GET['num']) ? $_GET['num'] : 1;
$url="http://image.xxx.com/img/{$id}/{$num}.jpg";
  
$array=get_headers($url,1);
  
//通过返回200和400来判断是增加$id或者$num
if(preg_match('/200/',$array[0])){
    $new_url="?id={$id}&num=".($num+1);
  
    ob_start();
    readfile($url);
    $img = ob_get_contents();
    ob_end_clean(); 
  
    $filename="./img/{$id}_{$num}.jpg";
    $f=fopen($filename,'a');
    fwrite($f,$img);
    fclose($f);
}else{
    $new_url="?id=".($id+1)."&num=1";
}
if($id > 1999) exit('全部完成');
//显示当前的状态
echo $url,' - ',$array[0],'<script>location.href="'.$new_url.'";</script>';
?>


分享到:

相关文章

swoole服务器无人值守检测脚本

#!/bin/bash while true do     process=`ps aux | grep&nb...

jQuery编程的最佳实践

加载jQuery1.坚持使用CDN来加载jQuery,这种别人服务器免费帮你托管文件的便宜干嘛不占呢。点击查看使用CDN的好处,点此查看一些主流的jQuery CDN地址。<script&nbs...

 MUI动态加载数据后,scrollToBottom无效的解决方案

MUI动态加载数据后,scrollToBottom无效的解决方案

一个类似于聊天的效果,要求数据加载完成后,滚动条必须在最后。但是,如果数据是原始数据的话,使用scrollToBottom是可以滚动到底部的。但是如果是动态数据的话,就无效了。找了很多方法,官方QQ群...

MYSQL IS NOT RUNNING, BUT LOCK FILE (/VAR/LOCK/SUBSYS/MYSQL) EXISTS

[root@admin-node subsys]# service mysql startStarting MySQL. ERROR! [root@admin-node subsys]# servic...

什么是“堆”,"栈","堆栈","队列",它们的区别

什么是“堆”,"栈","堆栈","队列",它们的区别

如果你学过数据结构,就一定会遇到“堆”,"栈","堆栈","队列",而最关键的是这些到底是什么意思?最关键的是即使你去面试,这些都还会问到,...

最常用的架构模式

最常用的架构模式

观其设计知其人A MAN is KNOWN by the DESIGN he keeps原文:Most Useful Software Architecture Patterns by Sh...

发表评论    

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。