Código PHP:
    function descargar_archivos($url_descargar,$nombre_nuevo,$nombre_imagen,$tamano_archivo_guardado)
{
  if (@fopen($url_descargar, "r"))
    {
                    if($nombre_nuevo==NULL)
                {
                    $titulo_archivo="Vacio_".$nombre_nuevo;
                }
                else// contiene titulo
                {
                    $titulo_archivo=$nombre_nuevo;
                }
            // carpeta con permisos 777
                $carpeta_destino="descargas_imagenes/$titulo_archivo";
                
                $tamano_a_descargar=filesize($carpeta_destino); // Checa el tamano del archivo
            
         if($tamano_archivo_guardado==$tamano_a_descargar AND !empty($tamano_archivo_guardado))
         {
         }
        else
        {
            
                      // Preparativos
              $url_descargar = str_replace(' ', '%20', html_entity_decode($url_descargar)); // dando formato a url
              if (file_exists($carpeta_destino)) 
              { 
                  chmod($carpeta_destino, 0777); 
              } // añadir permiso de escritura
                            
                 
              // Inicia transferencia
              if (($rh = fopen($url_descargar, 'rb')) === FALSE) 
              { 
                  return false; 
              } // fopen() handles
            
              if (($wh = fopen($carpeta_destino, 'wb')) === FALSE) 
              { 
                  return false; 
              } // mensajes de error.
              
              while (!feof($rh))
              {
                // incapaz de escribir en el archivo, posiblemente debido a que el disco duro esta lleno
                if (fwrite($wh, fread($rh, 1024)) === FALSE) 
                { 
                    fclose($rh); 
                    fclose($wh); 
                    return false; 
                }
                
              }
            
              // Terminado sin errores
              fclose($rh);
              fclose($wh);
              @chmod($carpeta_destino, 0777);
              
                echo"<p>";
                //echo "Tamano de archivo a descargar =  $tamano_a_descargar<br>";
                //echo "Tamano de archivo guardado = $tamano_archivo_guardado<br>";
                echo "URL= $url_descargar<br>";
               // echo "Guardado como = $nombre_nuevo<br>";
                echo "imagen= $nombre_imagen<br><br>";
                echo "</p>";
        }
    } 
    else
    {
        echo"<p>
        <font size='2' color='red'><b>No se pudo abrir o no existe la URL, favor de checarlo<br> ";
        echo" URL = $url_descargar <br>";
        echo" Imagen=  $nombre_imagen </b></font></p>";
    } 
    
   
}
conectar();
        $query="SELECT *";
        $query.=" FROM tabla_imagenes";    
        $query.=" ORDER BY id DESC";        
$query=mysql_query($query) or die(mysql_error());
$total=mysql_num_rows($query);
        if($total==0)
        {
            echo"<p><label for='id_imagenes' class='left'>Imagenes:</label>";
            echo "No hay imagenes para actualizar";
            echo "</p>";
        } 
         else
         {
        echo"<p><label for='id_imagenes' class='left'>Imagenes:</label></p>";  
        while ($rs = mysql_fetch_array($query))
              {  
                 $url_descargar=trim($rs[URL_descarga]);
                 $nombre_nuevo = basename($url_descargar);        
                 $nombre_imagen=trim(htmlentities($rs[nombre_imagen])); 
                 $archivo_guardado="descargas_imagenes/$nombre_nuevo";
                 $tamano_archivo_guardado=filesize($archivo_guardado);
descargar_archivos($url_descargar,$nombre_nuevo,$nombre_imagen,$tamano_archivo_guardado);
              } 
              echo"<p><font size='2' color='green'><b>Actualizacion Finalizada</b></font></p>";  
        } 
    
  
Aqui tienes un ejemplo de la funcion que utilizo yo para descargar archivos desde un dominio hacia una carpeta de mi servidor, los archivos que descargo me se los nombres  y los registro en la base de datos.
Echale un ojo al codigo y te servira
saludos...