Ben déjà :
// Si tout va bien, c´est bien déroulé
if(copy($ftmp,´´.$folder.´´.$fname.´´)) {$error = 0;}
Peu importe si y´a eu des erreurs ou pas, le fichier sera uploadé.
Comme solution simple pour que le fichier ne soit pas uploadé si y´a une erreur, tu devrais initialiser $error à 0 vers le début du fichier, puis faire un test dessus (par exemple) :
// Si tout va bien, c´est bien déroulé
if($error==0)
{
copy($ftmp,´´.$folder.´´.$fname.´´);
}