La scritta "File caricato" ti appare perché non è messa a seguito di alcun controllo, quindi qualsiasi cosa succeda, il flusso dello script a quell'istruzione ci arriva sempre.
Se vuoi che venga scritto solo se davvero è stato copiato, allora devi mettere un if che verifichi che copy è andato a buon fine.

per quanto riguarda i percorsi sostituisci questo:
copy($_FILES['nomefile']['tmp_name'],"txt/".$_FILES['nomefile']['tmp_name'])

con questo
move_uploaded_file($_FILES['nomefile']['tmp_name'], "txt/".$_FILES['nomefile']['name']);