//需求是這樣,再不改變目錄結(jié)構(gòu)的前提下,通過URL,批量下載文件,我已經(jīng)寫好了一點兒了
//但是有點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='./';
????}
????//創(chuàng)建保存目錄
????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里的內(nèi)容
/*
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條經(jīng)驗 獲得超227個贊
使用trim去掉空白字符,問題出在不能用回車換行字符作為文件名。簡單點,即你在你的q.txt文件內(nèi)最后回車一下,保存。重新執(zhí)行腳本,你會發(fā)現(xiàn)最后一個文件也不能下載了。解決方案很簡單,更改如下:
$url_arr=array();????while?(!feof($file))?{ ????????$url=trim(fgets($file)); ????????array_push($url_arr,$url); ????}
- 1 回答
- 0 關(guān)注
- 1478 瀏覽
添加回答
舉報
0/150
提交
取消