Creating a Multi-File Upload Script in PHP

This is an article on Creating a Multi-File Upload Script in PHP in PHP.

File upload is very common requirement of many web sites. We may require to upload pictures online to websites. Image upload is very common requirement and many sites are using this to allow members or visitors to upload files.

We will learn how to upload multiple files using a single form. This is required if you are allowing members to upload more than one file and you don't know how many files you allow them to upload. Say you want up to 8 files any member of your site can upload. As your members upload and delete files so at the time of displaying the form to allow them to upload you would like to check the existing number of files they have and accordingly display them upload fields to add files.

Multiple files can be uploaded using different name for input.

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:

When the above form is submitted, the arrays $_FILES['userfile'], $_FILES['userfile']['name'], and $_FILES['userfile']['size'] will be initialized.. When register_global 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.

This part will display the form and the number of upload boxes as per set by the variable. Now we will move to next part explaining how to handle the uploaded file and how to know what are the fields uploaded by the user. We will be using PHP Multidimensional array here. We will receive the field data in the addimg.php file. The file addimg.php will use php multidimensional array and we will use array display techniques to know the input fields for file upload. Please ensure that write permission is given to the directory where files are to be stored. ( Here the directory name is upimage )

Code: PHP

while(list($key,$value) = each($_FILES[image][name])){if(!empty($value))// this will check if any blank field is entered{$filename = $value; // filename stores the value$add = "upimage/$filename"; // upload directory path is set//echo $_FILES[image][type][$key]; // uncomment this line if you want to display the file type// echo "<br>"; // Display a line breakcopy($_FILES[image][tmp_name][$key], $add); // upload the file to the serverchmod("$add",0777); // set permission to the file. }}

As this script allows more than one file to upload so this script is likely to take more time than normal execution time.