Желание разобраться в мелочах всегда пагубно сказывается на обобщенном результате. Тем не мене, почему для загрузки файла, в теге FORM, нужно указывать атрибут enctype, со значением multipart/form-data?
За разъяснениями обратимся к спецификации HTML 4.01.
Атрибут enctype элемента
FORMопределяет тип содержимого (англ. content type), используемый при кодировке набора данных формы для отправки на сервер. По умолчанию тип содержимого определен как application/x-www-form-urlencoded. Для пересылки файлов, бинарных данных или текста, содержащего не-ASCII символы следует использовать multipart/form-data.
Другими словами, атрибут enctype задает способ кодирования данных при их отправке. Но все же, в чем особенность multipart/form-data типа? Отгадка кроется в самом названии: multipart с англ. составной – т.е. получается: составные данные формы.
Прояснить этот термин мне помогла Википедия:
Составной документ – это тип документов, который помимо обычного текста, может содержать: таблицы, рисунки, видео, аудио и другие мультимедийные объекты. Составной документ также может быть использован для собирания нескольких документов в один.
Другими словами, такой вид кодирования позволяет отправлять на сервер различного типа (составные) данные формы.
Следует также отметить, что для такого типа данных как файлы в том же PHP имеется отдельная переменная $_FILE, представляющую собой супер-глобальный массив содержащий информацию и загружаемых файлах.