When building HTML forms why do we not always use enctype="multipart/form-data"?
Because it's a pain to handle, both on the server and in custom clients. Simple is better than complicated, unless simple just doesn't work.
multipart/form-data
is a lot bulkier than application/x-www-form-urlencoded
; the latter is just a bunch of keys and values (and can be parsed the same way whether for GET
or POST
), whereas the former requires full MIME support, and is thus more useful when you have data that can't simply be represented as key/value pairs.
With PHP it doesn't matter what kind o enctype the form had. You always get key/value pairs.
So if harder coding is the only reason not to and you are using PHP, just use enctype="multipart/form-data".
Is there any other reason?
Mulipart implicits that we are going to use different mime-types. For example, sending a binary file, you will have one part with the x-www-form-urlencoded part and the other with the octet-stream. Most of the times what you send is from the same mime type.