PHP批量下载指定路径图片
PHP中文网
PHP中文网 2017-04-10 14:59:59
[PHP讨论组]

知道服务器上图片所保存的路径,类http://site.com/main/photo/850/014.jpg,如何批量下载到本地,其中850文件夹及014文件名都从000开始匹配,文件存在就下载,否则略过:)

以下代码只能下载指定页面的:(,望大神指教,谢过!

/";

preg_match_all($reg,$content,$matches);

$path = './imgDownload';
if(!file_exists($path)){
    mkdir($path, 0777);
}

for($i = 0;$i < count($matches[1]);$i ++){

    /*explode
    $url_arr[$i] = explode('/', $matches[1][$i]);
    $last = count($url_arr[$i])-1;
    */

    //strrchr   
    $filename = strrchr($matches[1][$i], '/');

    downImage($matches[1][$i],$path.$filename);
    //downImage($matches[1][$i],$path.'/'.$url_arr[$i][$last]);
}

function downImage($url,$filename="") {
    if($url=="") return false;

    if($filename=="") {
        $ext=strrchr($url,".");
        if($ext!=".gif" && $ext!=".jpg" && $ext!=".png" && $ext!="jpeg") return false;
        $filename=date("YmdHis").$ext;
    }

    ob_start();
    //make file that output from url goes to buffer
    readfile($url);
    //file_get_contents($url);  这个方法不行的!!!只能用readfile
    $img = ob_get_contents();
    ob_end_clean();

    $fp=@fopen($filename, "a");//append
    fwrite($fp,$img);

    fclose($fp);

    return $filename;
}
PHP中文网
PHP中文网

认证高级PHP讲师

全部回复(1)
黄舟

可以使用 curl_multi_* 系列函数批量请求远程地址。 把所有需要请求的页面放到一个数组里,每次并发20个去请求。
建议修改下程序思路,先批量根据页面地址获取需要下载的图片地址,第二步再批量处理图片下载。
两个部分的都可以用 culr_multi_*系列函数去并发处理。

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号