Saturday, 2 September 2017

html - What does enctype='multipart/form-data' mean?




What does enctype='multipart/form-data' mean in an HTML form and when should we use it?


Answer



When you make a POST request, you have to encode the data that forms the body of the request in some way.



HTML forms provide three methods of encoding.




  • application/x-www-form-urlencoded (the default)

  • multipart/form-data


  • text/plain



Work was being done on adding application/json, but that has been abandoned.



(Other encodings are possible with HTTP requests generated using other means than an HTML form submission.)



The specifics of the formats don't matter to most developers. The important points are:





  • Never use text/plain.



When you are writing client-side code:




  • use multipart/form-data when your form includes any elements

  • otherwise you can use multipart/form-data or application/x-www-form-urlencoded but application/x-www-form-urlencoded will be more efficient




When you are writing server-side code:




  • Use a prewritten form handling library



Most (such as Perl's CGI->param or the one exposed by PHP's $_POST superglobal) will take care of the differences for you. Don't bother trying to parse the raw input received by the server.



Sometimes you will find a library which can't handle both formats. Node.js's most popular library for handling form data is body-parser which cannot handle multipart requests (but has documentation which recommends some alternatives which can).







If you are writing (or debugging) a library for parsing or generating the raw data, then you need to start worrying about the format. You might also want to know about it for interest's sake.



application/x-www-form-urlencoded is more or less the same as a query string on the end of the URL.



multipart/form-data is significantly more complicated but it allows entire files to be included in the data. An example of the result can be found in the HTML 4 specification.



text/plain is introduced by HTML 5 and is useful only for debugging — from the spec: They are not reliably interpretable by computer — and I'd argue that the others combined with tools (like the Net tab in the developer tools of most browsers) are better for that).


No comments:

Post a Comment

casting - Why wasn't Tobey Maguire in The Amazing Spider-Man? - Movies & TV

In the Spider-Man franchise, Tobey Maguire is an outstanding performer as a Spider-Man and also reprised his role in the sequels Spider-Man...