PHP copy()函数不能处理来自txt文件的项目列表

时间:2015-11-06 11:59:49

标签: php php-5.5

我有一个txt文件,其中包含大约400个图像的URL(摘录如下)。我编写了下面的脚本来快速将文件从一台服务器下载到另一台服务器(没有ssh访问)。

文本文件 - pics.txt

http://www.domain.com/pictures/name.jpg
http://www.domain.com/pictures/name1.jpg
http://www.domain.com/pictures/name2.jpg
http://www.domain.com/pictures/name3.jpg
http://www.domain.com/pictures/name4.jpg

我简单的PHP脚本:

$file = fopen("pics.txt", "r");

while(!feof($file)){

    $line = fgets($file);
    $filename = basename($line);
    $imagename = "tmp/$filename";
    echo "Trying to copy ".$line." to: ".$imagename;

    if (copy($line,$imagename)) {
        echo "Done file ".$line;
    } else {
        echo "Error occured";
    }

}
fclose($file);

然而它似乎不起作用。我得到:

Trying to copy http://www.domain.com/pictures/name.jpg to: tmp/name.jpg Error occured
Trying to copy http://www.domain.com/pictures/name1.jpg to: tmp/name1.jpg Error occured
Trying to copy http://www.domain.com/pictures/name2.jpg to: tmp/name2.jpg Error occured

如果我手动输入copy('http://www.domain.com/pictures/name.jpg', 'filename.jpg');

它运作正常吗?

任何想法我做错了什么?

1 个答案:

答案 0 :(得分:3)

根据要求,以及未来的读者对问题的确切问题。

您的文件每行都包含\n,并且是一个隐藏的文件字符,为您的网址添加了一个空格,从而打破了它的真实路径。

使用trim()将消除多余的空格。

使用错误报告:

来自评论:

  

"谢谢两位,我打开了错误报告,发现它在网址后面放了一个空格,即使文本文件中没有。 - 克里斯"

  

" @Chris是伟大的克里斯(你很受欢迎),我很高兴它得到了解决。然而,对于未来的读者而言,给出的答案实际上并不是解决方案。我不想在这里听到坏人的声音或者破坏每个人的气球;不要误解我的意思。但是,在这种情况下,您应该使用trim()来摆脱尾随空格。这些空格来自文件中隐藏的\n,它增加了一个空格。 - 弗雷德 - 伊 - "