Могу только предположить, что все файлы имеют приблизительно одну длину имени и происходит типичное переполнение. Проверьте очищаются ли переменные перед загрузкой каждого файла это первое. Второе не учувствует ли номер загружаемого файла в процессе сохранения файла на сервере ибо от 0 до 9 - одна цифра, 10 и более - две цифры, а в коде этого не учтено. Насколько я знаю имя файлу присваивается уже на стадии копирования из временной папки в папку назначения. Во временную загружается файл в виде имени-хеша.