Php 从远程服务器复制多个映像

Php 从远程服务器复制多个映像,php,Php,我正在尝试使用URL将多个图像从远程主机复制到我的本地框,并在我的本地框上使用XAMPP执行脚本 我用的是复印件。当我执行复制时,只创建数组中的最后一个映像。所以,如果我有5个图像链接,只有第5个图像被创建,之前的任何东西都不会创建文件 我尝试了CURL和FOpen,然后两者都创建了所有的文件,但是所有的文件都是空白的,除了最后一个非常好的文件 $txt_file = file_get_contents('urls_for_images.txt'); if(!empty($txt_file)){

我正在尝试使用URL将多个图像从远程主机复制到我的本地框,并在我的本地框上使用XAMPP执行脚本

我用的是复印件。当我执行复制时,只创建数组中的最后一个映像。所以,如果我有5个图像链接,只有第5个图像被创建,之前的任何东西都不会创建文件

我尝试了CURL和FOpen,然后两者都创建了所有的文件,但是所有的文件都是空白的,除了最后一个非常好的文件

$txt_file = file_get_contents('urls_for_images.txt');
if(!empty($txt_file)){
   $image_links = explode("\n", $txt_file);

   $i = 1;     
   foreach($image_links as $image_link){
     $file_info = pathinfo($image_link);
     copy($image_link, 'images/00' . $i . '_original.' . $file_info['extension']);
     $i++;
   }
}
我不确定问题发生在哪里,但它会复制文本文件中的最后一个图像,而不会复制任何其他图像,这对我来说似乎很奇怪


提前谢谢你的帮助

i变量永远不会更改,因此代码会尝试一次又一次地复制同名文件,并且只保存最后一个文件。 尝试以以下方式修改代码:

$txt_file = file_get_contents('urls_for_images.txt');

if(!empty($txt_file)){
   $image_links = explode("\n", $txt_file);

   $i = 1;
   foreach($image_links as $image_link){
      $file_info = pathinfo($image_link);
      copy($image_link, 'images/00' . $i . '_original.' . $file_info['extension']);
      $i++;
   }
}

最好使用just file,它会自动将文件读入数组:

$files = file('urls_for_images.txt', FILE_IGNORE_NEW_LINES);
foreach($files as $remote_file) {
   $local_file = ....;
   copy($remote_file, $local_file);
}

问题似乎是文本文件中的行结尾是\r\n,而您只使用\r\n进行分解。修复此问题的最快方法是通过爆炸\r\n;或使用默认参数修剪以从每行末尾删除\r

   foreach($image_links as $image_link){
     $image_link = trim($image_link);
     $file_info = pathinfo($image_link);
     ...
   }

但是,最干净的方法是使用,它会自动处理行尾。我建议您使用这种方法。

当我将代码复制到这里时,我没有添加“$I++”。它在我的机器上的代码中,这不是问题所在。谢谢你的帮助!可以尝试此复制修剪$tmp_name,$destination;