<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="content-type" content="text/html; charset=UTF-8"> <title>Uploading multiple files</title> </head> <body><div class="manualnavbar" style="text-align: center;"> <div class="prev" style="text-align: left; float: left;"><a href="features.file-upload.common-pitfalls.html">Common Pitfalls</a></div> <div class="next" style="text-align: right; float: right;"><a href="features.file-upload.put-method.html">PUT method support</a></div> <div class="up"><a href="features.file-upload.html">Handling file uploads</a></div> <div class="home"><a href="index.html">PHP Manual</a></div> </div><hr /><div id="features.file-upload.multiple" class="sect1"> <h2 class="title">Uploading multiple files</h2> <p class="simpara"> Multiple files can be uploaded using different <em>name</em> for <em>input</em>. </p> <p class="simpara"> It is also possible to upload multiple files simultaneously and have the information organized automatically in arrays for you. To do so, you need to use the same array submission syntax in the HTML form as you do with multiple selects and checkboxes: </p> <p class="para"> <div class="example" id="example-359"> <p><strong>Example #1 Uploading multiple files</strong></p> <div class="example-contents"> <div class="htmlcode"><pre class="htmlcode"><form action="file-upload.php" method="post" enctype="multipart/form-data"> Send these files:<br /> <input name="userfile[]" type="file" /><br /> <input name="userfile[]" type="file" /><br /> <input type="submit" value="Send files" /> </form></pre> </div> </div> </div> </p> <p class="simpara"> When the above form is submitted, the arrays <var class="varname"><var class="varname"><a href="reserved.variables.files.html" class="classname">$_FILES['userfile']</a></var></var>, <var class="varname"><var class="varname"><a href="reserved.variables.files.html" class="classname">$_FILES['userfile']['name']</a></var></var>, and <var class="varname"><var class="varname"><a href="reserved.variables.files.html" class="classname">$_FILES['userfile']['size']</a></var></var> will be initialized (as well as in <var class="varname"><var class="varname">$HTTP_POST_FILES</var></var> for PHP versions prior to 4.1.0). When <a href="ini.core.html#ini.register-globals" class="link">register_globals</a> is on, globals for uploaded files are also initialized. Each of these will be a numerically indexed array of the appropriate values for the submitted files. </p> <p class="simpara"> For instance, assume that the filenames <var class="filename">/home/test/review.html</var> and <var class="filename">/home/test/xwp.out</var> are submitted. In this case, <var class="varname"><var class="varname"><a href="reserved.variables.files.html" class="classname">$_FILES['userfile']['name'][0]</a></var></var> would contain the value <var class="filename">review.html</var>, and <var class="varname"><var class="varname"><a href="reserved.variables.files.html" class="classname">$_FILES['userfile']['name'][1]</a></var></var> would contain the value <var class="filename">xwp.out</var>. Similarly, <var class="varname"><var class="varname"><a href="reserved.variables.files.html" class="classname">$_FILES['userfile']['size'][0]</a></var></var> would contain <var class="filename">review.html</var>'s file size, and so forth. </p> <p class="simpara"> <var class="varname"><var class="varname"><a href="reserved.variables.files.html" class="classname">$_FILES['userfile']['name'][0]</a></var></var>, <var class="varname"><var class="varname"><a href="reserved.variables.files.html" class="classname">$_FILES['userfile']['tmp_name'][0]</a></var></var>, <var class="varname"><var class="varname"><a href="reserved.variables.files.html" class="classname">$_FILES['userfile']['size'][0]</a></var></var>, and <var class="varname"><var class="varname"><a href="reserved.variables.files.html" class="classname">$_FILES['userfile']['type'][0]</a></var></var> are also set. </p> <div class="warning"><strong class="warning">Warning</strong> <p class="simpara"> Since PHP 5.2.12, the <a href="ini.core.html#ini.max-file-uploads" class="link">max_file_uploads</a> configuration setting acts as a limit on the number of files that can be uploaded in one request. You will need to ensure that your form does not try to upload more files in one request than this limit. </p> </div> </div><hr /><div class="manualnavbar" style="text-align: center;"> <div class="prev" style="text-align: left; float: left;"><a href="features.file-upload.common-pitfalls.html">Common Pitfalls</a></div> <div class="next" style="text-align: right; float: right;"><a href="features.file-upload.put-method.html">PUT method support</a></div> <div class="up"><a href="features.file-upload.html">Handling file uploads</a></div> <div class="home"><a href="index.html">PHP Manual</a></div> </div></body></html>