Как указал @Duncan, проверка на стороне клиента, скорее всего, будет выполняться в JavaScript. Лично, если бы у меня было время / ресурсы, я бы сделал это для удобства конечного пользователя. Если они загружают огромный PDF-файл, когда система требует DOCX, было бы неудобно, если бы они не получили сообщение, пока загрузка не будет завершена.
Что касается имен файлов, мне кажется, что самое простое решение (и то, которое я использовал в прошлом) состоит в том, чтобы предположить, что все имена файлов плохие, и переименовать их. Есть несколько способов сделать это. Если вам нужно сохранить исходное имя файла, я бы просто использовал urlEncodedFormat (), чтобы очистить имя файла во что-то, что является веб-удобным. Если вам нужно сохранить все версии, вы можете добавить метку даты / времени, чтобы bob.xocx стал bob_201104051129.docx или что-то подобное. Если вам необходимо сохранить исходное имя файла без каких-либо изменений, я бы порекомендовал установить таблицу БД в качестве системы указателя, сохранить там исходное имя, метку времени и другие метаданные и сослаться на файл, переименовав его в ID.
Но urlEncodedFormat (), вероятно, достаточно для того, что вы обрисовали.