PHP从URL下载图像

时间:2013-01-15 08:20:41

标签: php curl

我有一个TXT文件,每个新文件都包含图像的URL。我正在读取文件并获取每个新URL并对图像进行处理并将其存储在本地,如下所示。

$filename = 'images.txt';
displayTXTList($filename);

function displayTXTList($fileName) {
    if(file_exists($fileName)) {
        $file = fopen($fileName, 'r');
        while (!feof($file)) {
            $url = fgets($file);
            $image = basename($url);
            downloadImages($image);
            downloadImages(str_replace(".jpg", 'l.jpg ', $image));
            downloadImages(str_replace(".jpg", 's.jpg ', $image));
        }
        fclose($file);
    }
}

function downloadImages($image) {
    $ch = curl_init('http://i.imgur.com/'.$image);
    $fp = fopen('images/'.$image, 'wb');
    curl_setopt($ch, CURLOPT_FILE, $fp);
    curl_setopt($ch, CURLOPT_HEADER, 0);
    curl_exec($ch);
    curl_close($ch);
    fclose($fp);
    //file_put_contents('images/'.$i, file_get_contents('http://i.imgur.com/'.$i));
}

我收到以下错误

Warning: fclose() expects parameter 1 to be resource, boolean given in C:\wamp\www\temp\nomad\index.php on line 45
Warning: fopen(images/BrRdRl.jpg ) [function.fopen]: failed to open stream: Invalid argument in C:\wamp\www\temp\nomad\index.php on line 40
Warning: curl_setopt(): supplied argument is not a valid File-Handle resource in C:\wamp\www\temp\nomad\index.php on line 41

ÿØÿàJFIFHHÿÛC  % !###&)&")"#"ÿÛC """""""""""""""""""""""""""""""""""""""""""""""""""ÿÀ«€"ÿÄÿÄ?!1AQ"aq‘2¡#B±ÁÑRáð$3bñCr‚’4SÿÄÿÄ2!1AQ"2aq‘¡±#BÁð3RáCÿÚ?²'¿>Ô ïš`#984ðv<«ë,ùÚ7§¬¸##½ç1N¹¥HóvÜtë\¯Ó4cÀ"¨mÞ€$yƒÚ† 9Æß4ºö© ý)uõνÌ#?Û­&¢@ Ó°D= Ý€§Î9Ò >}éQŠn ø  áÉØšPN{T“¾9r¥8ØŸ­NÕƒ]¨d`TE‘èv¢‰NFã­Î6ö¥ÉúPÕ¶ÔiCd`1NÆ~{ÐÃo±ýiFG<Ð1ùÅ 9ÆûŠi<?lWr1µ'ÚšI ŽôÐyæ—##<©XØnFç­vq€yÒ}pÆsLuÍ&7?5Ù Ž´†hÙÜæ“=É®Ï*LŽx dc<ý©Å²6Ðk¿š€8;ÓµoËïC$ç}8óÇS@R@èq\IÎôÀ0ÛRäæ€Yߨ§ÁjÜíúRç<¶ ë ç;R‰7ÅV9ÓA'  ±íš]CN9÷¨ù Ò†ÿ†€HΡÈ×gÒQÖƒsŽUÅ°»òmG<ë³±ýqAGù®-±É A¹ÎÞô Ÿ½FÔJ×däæ‡Øx4…Àçš@9È÷®1ÓæAΚd;ãô¦lAÚ¹ïHçÓ¾ç­4€AçΓP9èkƒmŠ`p;s]ƒA?4º¶ØRÇLý(ˆ<ö4¤`íýi¤“ÓjâO*Liá‚ämCÎÛ|Ó‹d`|Ó{)rÆ»ùr®Î:ïM=Å †<ö«ƒíšBÙÍ3rH;j<œdSIÞ°¿½!tÆiÝá¾q¸ö¦äŽ¦“8;òÀoœäQ`qçîiÁˆ·ô¦©Á&’A#•‚ÐíC&w |ÒŽuÇ¥ìs…¦u=;×dcs¸®$ã•¿óIÈ×z.ìÉÒ26¦’š\Œc|Òg}¶¡Ç–Æ»V6Ü×mŒcíM úГô¤ÓŸWù¤mÀÏsK¬7ùÞ¢Àz¶ JâÀg~};Ó5ïŠB #®(õ?AñOÉÁ ŠføÈ;R“¿#Ö€ §#Ôp=Í(ÿÈíýi™Æ S•ÀaÈžÔ˜ÇJïϧÅ0Nû╘’y|šinc1Y‡!ŒôÍ*îO:fœößÞœ¸2}éúí9<Ž;S—™ÏÓÝ`œ ä;ïèAA3¹Ï:A’Ù¤ÜÆM*Œu¢Àpm/Œèºð§oµ‘åJ9îhuq³ñN×¾3õ4ÄmŸjPv4:§¯ë]«¹ëBÀÈ;S³“µHTRfûB0ÛŠ ¶ç4„çßÛ4!†ãÚ»9Þ„Îôºú$ò8®ÎßZlíž\©Äž¼¨<õÎÛÒjÛ–)®Æ“QƒƒEŽ‡÷Çë\E46O1J ÿnÕÙ9ÜÓ É®ÕÒ‹€ã—Jì÷¡äô»=(0€ázWglf‡’;jí[ò¥bÄSÃ`mÓ¸ †Ûaµ.­ÆqEØPLíÊ»#VI SÁK«j:üŽB“9çLÈ°ëΈyc¶F{mIÀþ´Üûüm]«plÑ`<žÙÇÅ'!Ó~ô€“Þ—¯?j,tvÄçµq¡¦’kºS±ÉÆõÀo)qšîœèû³¿jLŒò&š;θrçH«gé ß~Tƒc]«;v¦³¶Ç•'0w¡±qÒ”Cz~9gqîqK±ß•7'' }©w#aEŽ…ÎûóÒÍ7ÕœšP 9Ð!F:ã4…Žø®Ã:S‚“üÛÑc¦7;÷ùÙÆ:ûW2œP?—Ê8É#4Z cNØ¥ÛzBÃ#šì†æÊ1í@¨ãƒþ+Ž>ôá;‡=:k.’0A‹156Û渜àæš}ö¤$|üÑ`/3ê®þõÙä Í&AÎÍ;¹œã÷®ý=é7;•ÃnôÀâO\WoÓÚˆ¤$c oïEŠ‡ †p0i¤íµ4“˯zâ=^Ô[¨ãÕý©2r~˜¡@nÝ)CY¨LæÔìåi àg#4»’psGc¶’4çn†—YÜv¦öÛzRçúP* œÎqÒ—P5ÀÆýiNO=ÿ¥¹<ö®o‘Ë­4d ñö§óå@ ƒœw¥Îã½.2» E÷¢ÀvsùFiN)9.)‡:Vúü×g'§À¦gmÆÔýCNˆPH"”`ò¦êa±¥ ¹ÇŒÿÁK“þô2pyNÎÙÇj@<rç]¨u;ô¦ô¥@ܨä9Ò :`b7ÛíJ+·åö¦À~{×tÞš.[õ¤ÈÏ÷¤…cóŠv£é™Î7¥9ý©Ø$.Iï÷§O\žÔÍ[îkµ„àÑc¦<žÃ«Î˜¸½+ ÕêÏޜͲ(%ð6ú×yƒÛäRØí ä¯F?jnO6Á¡k$mI«zh8ÓùüR lÙ¡ø® ’yS È ?JfsÖ¸A TVߘ¥vÄþaŸz'OÒ1€¤ŒŸÌ3]¤rð(Z,Ÿ½v®ô¾}IúWd`oÒ†Ûf»';uéEˆ&q¸'ï\IçèzŽw®,OZv€&­[Rî3VO?µ mñHAßû×g|mC-·=ë½8ï@è&tiŽ”=`‘©FÛvõg©ù®ÎÔñØ×gµõ ¶5ÙÛ4ÐG½q9Øb†ÇCĘaJ$# ŽÂ…žÄWdrÎÔ†QÇ3I¬ç™9çŠëϘ Q;Xž­ñša|ó8ïMÍvß4¬{«·Þ‘˜ïý)Δ¶&ŠŽ|‘JF¡éJnÿÙœò¢Æ(ôüu¤;{g ®b½²i¹j,j:wé\NÝé23½v¼õÚÓ¶1óK‘Ì …¶Þ“P'–(lçp6ù¦ë¨ZŽÜ f郿jÃàý)5óC‰öýisÊ€Xç¤;afÁ4ÍXÔqïLDà v3œoš`ÜçmùRõëj†!Ç=Æ)@ ïÊ“VvÇ;ô¨åèt;8î6®þmÁ'曯O1õ§gz{1ú³‚)Gq“ïMœàûRç¶>iA#–ô£9®É3ïEŽ„ÖqɉíOéìE'3]‘¾ÔZÙßÒ”¾ø#=3ÔGûR€q°¢ÐPýDíŠPG<}(dq½qcž´†[²­;^Np3ñAR@9æk³œp(PÄ¿Z][DýèE»b‚3°"€×µ8HA8'éBj@=èÞkéç±®ÎÃ¥c¹ÏA\6ݶ t9ëµpôäéÈ¡jßt¤,r7ø¦‰ ùßa]¨ç}èY$nMv­½ÅœŒŒRë厔-X “‘Ú”0ßa÷¤9#j\еgJvJ®3óEŽ‡ç¹®8è)‡¯>^Ôíð>Ô¬8‹«¿Z\íÓÞ˜W|šNGN)…Üœ‚>” r¦ƒØb¸9ß‘ïE…'}Îô¤úN(a;Š\㘠(PûSµwÚ™ØÒr眂tù¦ã~7Xf›«¶Â€ Û÷ÞŒo¶hi!Ú”1í@PMX¿ZM[íLÉaÊ—Ô~jAC‡.uÛçŠL]i2zšvGuÛ;S†Ý逜~o¥.I8&‹

当我将图像列表缩短为2-3时。我看到只下载了最后一张图片。

2 个答案:

答案 0 :(得分:2)

文件名中有一个空格:

downloadImages(str_replace(".jpg", 'l.jpg ', $image));
downloadImages(str_replace(".jpg", 's.jpg ', $image));
                                         ^ here

jpg

之后不应该有空格

答案 1 :(得分:1)

$fp = fopen('images/'.$image, 'wb');

此调用导致失败,并且未生成资源句柄