为了账号安全,请及时绑定邮箱和手机立即绑定

需求是这样,再不改变目录结构的前提下,通过URL,批量下载文件,我已经写好了一点儿了

需求是这样,再不改变目录结构的前提下,通过URL,批量下载文件,我已经写好了一点儿了

PHP
belence 2015-12-03 20:49:04
//需求是这样,再不改变目录结构的前提下,通过URL,批量下载文件,我已经写好了一点儿了 //但是有点bug,只能下载最后一个文件 //邱老师解决一下 <Php? $file=fopen("q.txt","r"); $superfluous = strlen("http://www.greenpeace.org/china/Global/china/"); if($file) {     $url_arr=array();     while (!feof($file)) {         $url=fgets($file);         array_push($url_arr,$url);     }     $url_arr_len=count($url_arr);     for($i=0;$i<$url_arr_len;$i++){         $url_item=$url_arr[$i];         $file_name=basename($url_item);         $name_length=strlen($file_name);         $path_str=substr($url_item,$superfluous);         $length=strlen($path_str)-$name_length;         $path="./upload/".substr($path_str,0,$length);         getFile($url_item,$path,$file_name);     }     fclose($file); } function getFile($url,$save_dir,$filename){     if(trim($url)==''){         return false;     }     if(trim($save_dir)==''){         $save_dir='./';     }     //创建保存目录     if(!file_exists($save_dir)&&!mkdir($save_dir,0777,true)){         return false;     }     //获取远程文件所采用的方法         $ch=curl_init();         $timeout=5;         curl_setopt($ch,CURLOPT_URL,$url);         curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);         curl_setopt($ch,CURLOPT_CONNECTTIMEOUT,$timeout);         $content=curl_exec($ch);         curl_close($ch);     //文件大小     $fp1=fopen($save_dir.$filename,"a");     if(fq)     fwrite($fp1,$content);     fclose($fp1);     return array('file_name'=>$filename,'save_path'=>$save_dir.$filename); } ?> //以下是q.txt里的内容 /* http://www.greenpeace.org/china/Global/china/_planet-2/2010/4/earth-day-2010.jpg http://www.greenpeace.org/china/Global/china/_planet-2/banners/2007/1/way-to-green.jpg http://www.greenpeace.org/china/Global/china/_planet-2/banners/2007/10/great-whale-trail-name-a-wha.gif http://www.greenpeace.org/china/Global/china/_planet-2/banners/2007/10/GWT_mainbanner.gif */
查看完整描述

1 回答

?
pardon110

TA贡献1038条经验 获得超227个赞

使用trim去掉空白字符,问题出在不能用回车换行字符作为文件名。简单点,即你在你的q.txt文件内最后回车一下,保存。重新执行脚本,你会发现最后一个文件也不能下载了。解决方案很简单,更改如下:

$url_arr=array();    while (!feof($file)) {
        $url=trim(fgets($file));
        array_push($url_arr,$url);
    }


查看完整回答
反对 回复 2016-01-23
  • 1 回答
  • 0 关注
  • 1448 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信