<HTML ><HEAD ><TITLE >Uploading multiple files</TITLE ><META NAME="GENERATOR" CONTENT="Modular DocBook HTML Stylesheet Version 1.7"><LINK REL="HOME" TITLE="PHP Manual" HREF="index.html"><LINK REL="UP" TITLE="Handling file uploads" HREF="features.file-upload.html"><LINK REL="PREVIOUS" TITLE="Common Pitfalls" HREF="features.file-upload.common-pitfalls.html"><LINK REL="NEXT" TITLE="PUT method support" HREF="features.file-upload.put-method.html"><META HTTP-EQUIV="Content-type" CONTENT="text/html; charset=ISO-8859-1"></HEAD ><BODY CLASS="sect1" BGCOLOR="#FFFFFF" TEXT="#000000" LINK="#0000FF" VLINK="#840084" ALINK="#0000FF" ><DIV CLASS="NAVHEADER" ><TABLE SUMMARY="Header navigation table" WIDTH="100%" BORDER="0" CELLPADDING="0" CELLSPACING="0" ><TR ><TH COLSPAN="3" ALIGN="center" >PHP Manual</TH ></TR ><TR ><TD WIDTH="10%" ALIGN="left" VALIGN="bottom" ><A HREF="features.file-upload.common-pitfalls.html" ACCESSKEY="P" >Prev</A ></TD ><TD WIDTH="80%" ALIGN="center" VALIGN="bottom" >Chapter 18. Handling file uploads</TD ><TD WIDTH="10%" ALIGN="right" VALIGN="bottom" ><A HREF="features.file-upload.put-method.html" ACCESSKEY="N" >Next</A ></TD ></TR ></TABLE ><HR ALIGN="LEFT" WIDTH="100%"></DIV ><DIV CLASS="sect1" ><H1 CLASS="sect1" ><A NAME="features.file-upload.multiple" ></A >Uploading multiple files</H1 ><P > Multiple files can be uploaded using different <TT CLASS="literal" >name</TT > for <TT CLASS="literal" >input</TT >. </P ><P > 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 ><DIV CLASS="note" ><BLOCKQUOTE CLASS="note" ><P ><B >Note: </B > Support for multiple file uploads was added in version 3.0.10. </P ></BLOCKQUOTE ></DIV ><P > <TABLE WIDTH="100%" BORDER="0" CELLPADDING="0" CELLSPACING="0" CLASS="EXAMPLE" ><TR ><TD ><DIV CLASS="example" ><A NAME="AEN5940" ></A ><P ><B >Example 18-3. Uploading multiple files</B ></P ><TABLE BORDER="0" BGCOLOR="#E0E0E0" CELLPADDING="5" ><TR ><TD ><PRE CLASS="html" ><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 ></TD ></TR ></TABLE ></DIV ></TD ></TR ></TABLE > </P ><P > When the above form is submitted, the arrays <TT CLASS="varname" >$_FILES['userfile']</TT >, <TT CLASS="varname" >$_FILES['userfile']['name']</TT >, and <TT CLASS="varname" >$_FILES['userfile']['size']</TT > will be initialized (as well as in $HTTP_POST_FILES for PHP version prior 4.1.0). When <TT CLASS="literal" >register_globals</TT > 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 > For instance, assume that the filenames <TT CLASS="filename" >/home/test/review.html</TT > and <TT CLASS="filename" >/home/test/xwp.out</TT > are submitted. In this case, <TT CLASS="varname" >$_FILES['userfile']['name'][0]</TT > would contain the value <TT CLASS="filename" >review.html</TT >, and <TT CLASS="varname" >$_FILES['userfile']['name'][1]</TT > would contain the value <TT CLASS="filename" >xwp.out</TT >. Similarly, <TT CLASS="varname" >$_FILES['userfile']['size'][0]</TT > would contain <TT CLASS="filename" >review.html</TT >'s filesize, and so forth. </P ><P > <TT CLASS="varname" >$_FILES['userfile']['name'][0]</TT >, <TT CLASS="varname" >$_FILES['userfile']['tmp_name'][0]</TT >, <TT CLASS="varname" >$_FILES['userfile']['size'][0]</TT >, and <TT CLASS="varname" >$_FILES['userfile']['type'][0]</TT > are also set. </P ></DIV ><DIV CLASS="NAVFOOTER" ><HR ALIGN="LEFT" WIDTH="100%"><TABLE SUMMARY="Footer navigation table" WIDTH="100%" BORDER="0" CELLPADDING="0" CELLSPACING="0" ><TR ><TD WIDTH="33%" ALIGN="left" VALIGN="top" ><A HREF="features.file-upload.common-pitfalls.html" ACCESSKEY="P" >Prev</A ></TD ><TD WIDTH="34%" ALIGN="center" VALIGN="top" ><A HREF="index.html" ACCESSKEY="H" >Home</A ></TD ><TD WIDTH="33%" ALIGN="right" VALIGN="top" ><A HREF="features.file-upload.put-method.html" ACCESSKEY="N" >Next</A ></TD ></TR ><TR ><TD WIDTH="33%" ALIGN="left" VALIGN="top" >Common Pitfalls</TD ><TD WIDTH="34%" ALIGN="center" VALIGN="top" ><A HREF="features.file-upload.html" ACCESSKEY="U" >Up</A ></TD ><TD WIDTH="33%" ALIGN="right" VALIGN="top" >PUT method support</TD ></TR ></TABLE ></DIV ></BODY ></HTML >