大家好,刚刚使用php不久,遇到点麻烦,搞了3天了,还请大家指教。我在linux上用php进行图片下载出现很诡异的现象,大家帮忙分析分析我从txt中读入url,假设总共有5个。前四张图片总是download不下来,就是只有4kb,只有最后一张图可以完整下载。代码如下:@$fp=fopen('try.dat','r');
if(!$fp)
{
echo 'the file does not exist';
exit;
}

while(!feof($fp))
{
$line = fgets($fp); list($name, $URL) = explode("\t",$line);
                $img =file_get_contents($URL);
                file_put_contents($name,$img);
         }
fclose($fp);

解决方案 »

  1.   

    你先每行都打印出来,看看是否获取正确,再判断是否存在文件,一步一步来debug
      

  2.   

    $img =file_get_contents($URL); 是否有获取到数据?
    该url是否存在?
    你的几个name是否一样?会覆盖文件?使用curl方式试试
      

  3.   

    肯定是没有重复,5个文件都有,只是前面几个全是4kb在学校服务器上跑程序不敢装curl
      

  4.   

    无法打开估计就是一些metadata吧
      

  5.   

    把每一句都加上 try 看看是哪句出错了
      

  6.   

    哪句都不报错。如果我把那5个url的顺序换一换还是只能down下来最后一个,我怀疑是get_file_contents刚开始执行,程序又开始读下一行了,导致文件只下载了一点。而最后一个循环的时候不涉及这个问题,所以全部下载完成。但是这个怎么解决呢?
      

  7.   

    抓图代码本身没有问题,你说图也没有问题,那只能是try.dat文件文件的问题了。
      

  8.   

    发现用fscanf就没问题了只是fscanf有缺陷不能分辨‘\t’ and ' '
      

  9.   

    1 求楼主的txt 里面的内容
    2 建议针对这些没法直接通过视觉查看的东西写日志进行追踪。
      

  10.   

    164034151 2006-06-09 23:16:07 http://farm1.static.flickr.com/50/164034151_6f7897c17c.jpg
    164034054 2006-06-09 23:15:49 http://farm1.static.flickr.com/69/164034054_9434d7e75d.jpg
    3013053476 2008-10-09 17:55:52 http://farm4.static.flickr.com/3191/3013053476_51c14c6e2a.jpg
    3012222835 2008-10-13 18:19:03 http://farm4.static.flickr.com/3212/3012222835_e10cb72613.jpg
    3012213541 2008-10-09 17:55:08 http://farm4.static.flickr.com/3043/3012213541_1b7156cfea.jpg
      

  11.   

    无代码,永远无真相。
    另外,有些防外链的网站,地址直接打开是可以显示的,而存在referer后则显示出错信息。
    建议把4kb的图片文件重命名为.HTML。相信你就能看到真相了。