The default encoding type,
application/x-www-form-urlencoded, lists field names and values similar to how they appear in the query parameters in a GET request. For instance,
POST /form.php HTTP/1.1
As you can see, this type of encoding is not useful for uploading files, because files can contain any character.
multipart/form-data encoding the POST request body is split into multiple parts. Each part is delimited by a special identifier string, which makes it possible for the receiving application to detect the end of the uploaded file's content.