Actually, i display images on my site from other sites. Url is on a custom field name "couv"
I'd like to download theses pictures on my site and create a new custom field with the new value "couv2"
I tried to do this with a function in my functions.php with the following code.
But it doesn't work.
Where did i make a mistake ?
Thanks for your help.

        function downloadcouv() {
    global $wp_query;
    $lien=get_post_meta($wp_query->queried_object->ID, "couv", true);
    $uploads = wp_upload_dir();
    $reg="#([^/]*)$#";
    $chaine=$lien;
    preg_match($reg,$chaine,$res);
    $couv = $uploads['baseurl'] . '/couv/' . $res[1];
    copy($lien, $couv);
    add_post_meta($wp_query->queried_object->ID, "couv2", $couv, true);
    }
    add_action( 'save_post', 'downloadcouv' );