Click here to Skip to main content
13,508,228 members
Click here to Skip to main content
Add your own
alternative version


28 bookmarked
Posted 15 Jul 2007

JavaScript/PHP - Multiple File Upload

, 15 Jul 2007
Rate this:
Please Sign up or sign in to vote.
Option to add n number of file input controls to upload multiple files.


This snippet allows users to add multiple files to be uploaded. By default, only one file upload control is visible. Upon clicking the "+" icon, more controls are added.

Screenshot - default.jpg

Default form

Screenshot - more.jpg

More file controls added


Very often to allow multiple file uploads, an unnecessary number of file upload controls are preloaded in forms. This code is an example of how to keep the form clean without losing the important features.

Using the Code

This code snippet is developed with PHP and needs an Apache webserver to run. The "uploads" directory needs file read-write permission. To use it in an application, you will need to add a database interface to store the uploaded information. It is a single file that has both the form and its handler.

The script has two functions: uploadForm and upload. uploadForm displays the form and upload does the form handling.


The above is an example for new programmers on how to deine a form and its handling in the same script.

<tr class="txt">
   <td valign="top">
    <div id="dvFile">
     <input type="file" name="item_file[]">
   <td valign="top">
    <a href="javascript:_add_more();" title="Add more">
     <img src="plus_icon.gif" border="0">

The hyperlink to the icon invokes the JavaScript function _add_more, which adds more control to the form. I have used the div to identify a block of the form and populate more controls in this block.

function _add_more() {
  var txt = "<br><input type=\"file\" name=\"item_file[]\">";
  document.getElementById("dvFile").innerHTML += txt;

The JavaScript function adds more controls as required.

if(count($_FILES["item_file"]['name'])>0) { //check if any file uploaded
  $GLOBALS['msg'] = ""; //initiate the global message
  for($j=0; $j < count($_FILES["item_file"]['name']); $j++) { 
  //loop the uploaded file array
   $filen = $_FILES["item_file"]['name']["$j"]; //file name
   $path = 'uploads/'.$filen; //generate the destination path
   if(move_uploaded_file($_FILES["item_file"]['tmp_name']["$j"],$path)) {
   //upload the file
    $GLOBALS['msg'] .= "File# ".($j+1)." ($filen) uploaded successfully<br>";
    //Success message
 else {
  $GLOBALS['msg'] = "No files found to upload"; //No file upload message 

The uploaded file handler function checks for uploaded files, and if found, stores them in the web server.

Future Enhancement

In the code, if the user chooses a file and then adds more controls, the previous file information is not stored and is lost. I need to add a feature to store the previously chosen file.


This article, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)


About the Author

Anisur RM
Web Developer
India India
I am a web-application developer and like to play around with different web technologies for fun. I already dug some ground in JavaScript, PHP, Java, MySQL, Apache and Linux and now like to dig some in C#. I will try to share some of my experience with you, which you may or may not like. Please advice suggestion to improve them.

You may also be interested in...

Comments and Discussions

GeneralMy vote of 5 Pin
Member 112025813-Nov-14 19:39
memberMember 112025813-Nov-14 19:39 
Questionjquery datepicker not working in add more input fields of name="date[]" Pin
Member 112025813-Nov-14 3:05
memberMember 112025813-Nov-14 3:05 
QuestionNeed help in php Pin
Amit yadav4-Apr-14 1:04
memberAmit yadav4-Apr-14 1:04 
QuestionFiles are getting uploaded in localhost(local server) but not on the remote server? Pin
Member 1054036221-Jan-14 19:50
memberMember 1054036221-Jan-14 19:50 
QuestionDear sir i seen ur code muttiple upload so nice code Pin
tabrez123459-Jan-14 9:58
membertabrez123459-Jan-14 9:58 
QuestionSave name to database Pin
kfaskfjas9-Feb-13 23:56
memberkfaskfjas9-Feb-13 23:56 
GeneralMy vote of 1 Pin
Arumuga Naninar10-Dec-12 21:44
memberArumuga Naninar10-Dec-12 21:44 
QuestionGet Undefined index: pgaction when first time form load Pin
niravbhavsar31-Oct-12 19:57
memberniravbhavsar31-Oct-12 19:57 
QuestionUploaded files not going into directory (uploads/) Pin
gdmoland16-Oct-12 7:26
membergdmoland16-Oct-12 7:26 
QuestionMultiple Upload File Pin
Dr3am3rz17-Jun-12 17:03
memberDr3am3rz17-Jun-12 17:03 
NewsPHP Pin
Roza Can17-May-12 8:38
memberRoza Can17-May-12 8:38 
Questioncan i use this script without js Pin
kmkmahesh21-Feb-12 21:18
memberkmkmahesh21-Feb-12 21:18 
AnswerRe: can i use this script without js Pin
Anisur RM28-Feb-12 18:25
memberAnisur RM28-Feb-12 18:25 
Questionsend attached to email Pin
Member 844554530-Nov-11 20:07
memberMember 844554530-Nov-11 20:07 
AnswerRe: send attached to email Pin
Anisur RM1-Dec-11 1:38
memberAnisur RM1-Dec-11 1:38 
GeneralRe: send attached to email Pin
Member 84455451-Dec-11 14:10
memberMember 84455451-Dec-11 14:10 
Questionhow can i add more field and save to database Pin
Femi Orogun19-Oct-11 4:25
memberFemi Orogun19-Oct-11 4:25 
AnswerRe: how can i add more field and save to database Pin
Anisur RM1-Dec-11 1:43
memberAnisur RM1-Dec-11 1:43 
Questionupload images only Pin
Member 811675927-Jul-11 6:22
memberMember 811675927-Jul-11 6:22 
AnswerRe: upload images only Pin
Anisur RM1-Dec-11 1:46
memberAnisur RM1-Dec-11 1:46 
GeneralMy vote of 4 Pin
John Ortiz19-Jun-11 2:15
memberJohn Ortiz19-Jun-11 2:15 
Generalthank you Pin
Mohamed7IBrahim22-Nov-10 7:16
memberMohamed7IBrahim22-Nov-10 7:16 
GeneralMy vote of 2 Pin
R o n n y25-Apr-10 23:19
memberR o n n y25-Apr-10 23:19 
QuestionClears selections when adding additional fields Pin
Shawn Poquette9-Feb-09 19:10
memberShawn Poquette9-Feb-09 19:10 
AnswerRe: Clears selections when adding additional fields Pin
petershaman13-Feb-09 3:21
memberpetershaman13-Feb-09 3:21 

General General    News News    Suggestion Suggestion    Question Question    Bug Bug    Answer Answer    Joke Joke    Praise Praise    Rant Rant    Admin Admin   

Use Ctrl+Left/Right to switch messages, Ctrl+Up/Down to switch threads, Ctrl+Shift+Left/Right to switch pages.

Permalink | Advertise | Privacy | Terms of Use | Mobile
Web02 | 2.8.180417.1 | Last Updated 16 Jul 2007
Article Copyright 2007 by Anisur RM
Everything else Copyright © CodeProject, 1999-2018
Layout: fixed | fluid