detalles de tu codigo.
1. en tu codigo de upload, veo que hay varios if y no estan ordenados. como dijo MaBoRaK, debes depurar tu codigo y buscar cual esta fallando.
2. debes ordenar tu codigo porque asi nadie lo va entender.
3. tu le colocas la funcion copy. en realidad se trabaja mejor con la funcion move_uploaded_file(). no se cual sera la diferencia de esas 2 funciones.
4. si deseas que tu aplicacion este resuelta, mejor empienza a desarrollar tu codigo para subir archivos desde cero. si te diste cuenta hay una seccion de
aportes de scripts desarrollados como el de subir una imagen.
APORTE: Subir imagen con php
porque si vas a depurar tu codigo, revisando nuevamente cual es el error y de nuevo consultar que alguen te oriente, te demorarias mucho.
el aporte que te deje, te servira mucho, ya que se ha discutido mucho sobre ese tema.
P.D: lo que mencione antes sobre que desarrolles tu codigo para subir archivos desde cero, no lo dije de mala intencion. con el enlace del aporte que te deje, te servira de gran ayuda para que puedas desarrollar tu codigo y lo puedas entender.
cualquier consulta, con gusto te ayudare.
saludos.