Dlaczego tak
Zawartość pliku przesyła się w treści żądania, więc potrzebna jest metoda POST, a kodowanie multipart/form-data dzieli treść na części, z których jedna zawiera binarne dane pliku. Bez tego kodowania przeglądarka wyśle tylko nazwę pliku, a tablica $_FILES w PHP pozostanie pusta. Metoda GET nie przenosi treści żądania, a text/plain nie nadaje się do danych binarnych.