summaryrefslogblamecommitdiffstats
path: root/_build/static/docs/en/cowboy/1.0/guide/multipart_intro/index.html
blob: 1ace9c22b8a3bf3671ae00d4aaaefc92959ae328 (plain) (tree)












































                                                                                                                                    
                                                                                                                                            








                                                                                                                                                                                      
                                                                                                                













































































































































                                                                                                                                                                                                                                                                                                                           
<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="utf-8">
    <title>Nine Nines Support: Cowboy User Guide</title>
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <!-- Change them or set them up as you like -->
    <meta name="description" content="">
    <meta name="author" content="(Soft10) Pol Cámara">

    <!-- Stylesheets -->    
    <link href='http://fonts.googleapis.com/css?family=Open+Sans:400,700,400italic' rel='stylesheet' type='text/css'>
    <link href="/css/bootstrap.min.css" rel="stylesheet">
    <link href="/css/99s.css" rel="stylesheet">
<!--    <link href="js/google-code-prettify/prettify.css" rel="stylesheet"> -->
    <link href="/css/sh99s.css"  rel="stylesheet"/>

    <!-- Enables html5 support on older browsers, other js is placed at the end of the page to speed up loading -->
    <!--[if lt IE 9]>
      <script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script>
    <![endif]-->

    <link rel="shortcut icon" href="/img/ico/favicon.ico">
    <link rel="apple-touch-icon-precomposed" sizes="114x114" href="/img/ico/apple-touch-icon-114.png">
    <link rel="apple-touch-icon-precomposed" sizes="72x72" href="/img/ico/apple-touch-icon-72.png">
    <link rel="apple-touch-icon-precomposed" href="/img/ico/apple-touch-icon-57.png">
	<link rel="alternate" href="/feeds/atom.xml" type="application/atom+xml" title="Nine Nines Atom Feed">
  </head>

  <body class="big_text docs">
    <header id="page-head">
      <div id="topbar" class="container">
          <div class="row">
            <div class="span2">
              <h1 id="logo"><a href="/" title="99s">99s</a></h1>
            </div>
            <div class="span10">
              <!-- Top navigation and social icons-->
              <div id="side-header">
                <nav>
                  <ul>
					<li><a title="Erlang training" href="/training">Training</a></li>
                    <li><a title="Technical publications" href="/articles">Articles</a></li>
					<li><a title="Our talks" href="/talks">Talks</a></li>
					<li class="active"><a title="Our services" href="/support">Pricing &amp; Sponsoring</a></li>
					<li><a title="Community support" href="https://ninenines.eu/archives/extend/">Mailing Lists</a></li>
                    <li><a title="Contact us" href="mailto:[email protected]">Contact</a></li>
                  </ul>
                </nav> 
                <ul id="social">
                  <li>
                    <a href="https://github.com/ninenines" title="Check our Github repositories"><img src="/img/ico_github.png" data-hover="/img/ico_github_alt.png" alt="Github"></a>
                  </li>
                  <li class="dropdown" id="twitter-links">
                    <a href="#twitter-links" class="dropdown-toggle" data-toggle="dropdown"  title="Follow us on Twitter">
                        <img src="/img/ico_microblog.png" data-hover="/img/ico_microblog_alt.png" alt="Twitter">
                    </a>                 
                    <ul class="dropdown-menu">
                      <li><a title="Visit Loïc Hoguin's Twitter Account" href="http://twitter.com/lhoguin">@lhoguin</a></li>
                      <!-- <li class="divider"></li>
                      <li><a title="Visit our official Twitter account" href="#">@99s</a></li> -->
                    </ul>
                  </li>
                  <!-- <li>
                    <a href="/css/" title="Add us on Linkedin"><img src="/img/ico_linkedin.png" data-hover="img/ico_linkedin_alt.png" alt="Linkedin"></a>
                  </li> -->
                </ul>
              </div>
            </div>
          </div>
      </div>


    </header>


<div id="contents" class="two_col">
<div class="container">
<div class="row">
<div id="docs" class="span9 maincol">

<h1 class="lined-header"><span>Introduction to multipart</span></h1>

<p>Multipart originates from MIME, an Internet standard that extends the format of emails. Multipart messages are a container for parts of any content-type.</p>

<p>For example, a multipart message may have a part containing text and a second part containing an image. This is what allows you to attach files to emails.</p>

<p>In the context of HTTP, multipart is most often used with the <code>multipart/form-data</code> content-type. This is the content-type you have to use when you want browsers to be allowed to upload files through HTML forms.</p>

<p>Multipart is of course not required for uploading files, it is only required when you want to do so through HTML forms.</p>

<h2 id="structure">Structure</h2>

<p>A multipart message is a list of parts. Parts may contain either a multipart message or a non-multipart content-type. This allows parts to be arranged in a tree structure, although this is a rare case as far as the Web is concerned.</p>

<h2 id="form-data">Form-data</h2>

<p>In the normal case, when a form is submitted, the browser will use the <code>application/x-www-form-urlencoded</code> content-type. This type is just a list of keys and values and is therefore not fit for uploading files.</p>

<p>That's where the <code>multipart/form-data</code> content-type comes in. When the form is configured to use this content-type, the browser will use one part of the message for each form field. This means that a file input field will be sent in its own part, but the same applies to all other kinds of fields.</p>

<p>A form with a text input, a file input and a select choice box will result in a multipart message with three parts, one for each field.</p>

<p>The browser does its best to determine the content-type of the files it sends this way, but you should not rely on it for determining the contents of the file. Proper investigation of the contents is recommended.</p>


<!-- a.code -->
</div>

<div class="span3 sidecol">
<div class="input-append">
<form id="form-search" class="form-search" action="#">
	<input id="input-search" type="text" placeholder="Function search" autocomplete="off" autofocus class="input-medium search-query span2">
	<button type="submit" class="btn btn-success">Go</button>
</form>
</div>

<h3 id="docs-nav">Navigation</h3>

<h3>See also</h3><ul><li><a href="/docs/en/cowboy/1.0/manual/">Function Reference</a></li><li><a href="/docs/en/cowboy/1.0/index.html">README</a></li></ul>

<h3>Version select</h3>
<ul>

	<li><a href="/docs/en/cowboy/1.0/guide/"><strong>1.0</strong></a></li>

	<li><a href="/docs/en/cowboy/HEAD/guide/"><strong>HEAD</strong></a></li>

</ul>

</div>
</div>
</div>
</div>


      <footer>
        <div class="container">
          <div class="row">
            <div class="span6">
              <p id="scroll-top"><a href="#">↑ Scroll to top</a></p>
              <nav>
                <ul>
                  <li><a href="mailto:[email protected]" title="Contact us">Contact us</a></li><li><a href="https://github.com/ninenines/ninenines.github.io" title="Github repository">Contribute to this site</a></li>
                </ul>
              </nav>
            </div>
            <div class="span6 credits">
               <p><img src="/img/footer_logo.png"></p>
               <p>Copyright &copy; Nine Nines 2012-2014</p>
            </div>
          </div>
        </div>
      </footer>

    <!-- Javascript -->
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script>
    <script src="/js/bootstrap-carousel.js"></script>
    <script src="/js/bootstrap-dropdown.js"></script>
    <script src="/js/custom.js"></script>


<script type="text/javascript" src="/js/shCore.js"></script>
<script type="text/javascript" src="/js/shlang/shBrushBash.js"></script>
<script type="text/javascript" src="/js/shlang/shBrushErlang.js"></script>
<script type="text/javascript" src="/js/shlang/shBrushJScript.js"></script>
<script type="text/javascript" src="/js/shlang/shBrushPlain.js"></script>
<script type="text/javascript">SyntaxHighlighter.all();</script>

<script type="text/javascript" src="/js/fuse.min.js"></script>
<script type="text/javascript">
$(document).ready(function(){
	var f;

	$.getJSON("/docs/db.json", function(data){
		f = new Fuse(data, {keys: ["n"], threshold: 0.3});
		$("<ul id=\"search-results\">").insertAfter("#form-search");
	});

	$("#input-search").keyup(function(e){if(f){if (e.which != 13 ){
		var results = f.search($(this).val());
		if (results.length == 0){
			$("#form-search").attr("action", "#");
		}else{
			$("#form-search").attr("action", results[0].l);
		}

		$("#search-results").empty();
		for (var i = 0; i < 10 && i < results.length; i++){
			$("<li><a href=\"" + results[i].l + "\">" + results[i].n + "</a></li>")
				.appendTo("#search-results");
		}
	}}});
});
</script>

  </body>
</html>