На некоторых серверах используется Apache, который по умолчанию перекодирует все принимаемые данные из множества кодировок, используемых у клиента, в одну стандартную, в которой они хранятся на сервере. Бинарные данные не должны подвергаться перекодированию, соответственно, эту функцию следует отключить. Для этого нужно в каталоге, где лежит загружающий скрипт, создать файл .htaccess и поместить в него директиву, отключающую перекодировку.
CharsetRecodeMultipartForms off
Эта директива отключает перекодировку данных, отправляемых из html-формы в формате multipart/form-data (который и применяется для загрузки файлов на сервер с помощью html-формы). Учитывайте, что если в форме, данные из которой принимает скрипт с отключенной перекодировкой, есть текстовые поля, то перекодировать их вам придется самостоятельно.