À priori certains anciens navigateurs (je ne citerai pas IE) donnent le chemin complet du fichier dans le filename : "c:\truct\truc\truc"
https://stackoverflow.com/questions/2347056/isnt-using-the-basename-function-with-filesuserfilename-redundant
toujours d'après ce lien, ce serait aussi pour éviter des injections du type filename="../../../../fichier/sur/le/serveur". Le sujet date d'il y a 8 ans, peut-être que maintenant apache intègre cette sécurité, ou pas.