How to upload multiple files using PHP

Post Reply
Tony
Lieutenant
Lieutenant
Posts: 86
Joined: Tue Jul 21, 2009 4:11 pm

How to upload multiple files using PHP

Post by Tony » Sun Nov 29, 2009 3:27 am

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. Here will try that. Here we will set one variable to the number of text fields to display and this value can be controlled based on the requirement or can be set by a script. Here is the code to display the form and you may read https://robot.lk/viewtopic.php?f=67&t=890 as well.

Code: Select all

$max_no_img=4; // Maximum number of images value to be set here

echo "<form method=post action=addimgck.php enctype='multipart/form-data'>";
echo "<table border='0' width='400' cellspacing='0' cellpadding='0' align=center>";
for($i=1; $i<=$max_no_img; $i++){
echo "<tr><td>Images $i</td><td>
<input type=file name='images[]' class='bginput'></td></tr>";
}

echo "<tr><td colspan=2 align=center><input type=submit value='Add Image'></td></tr>";
echo "</form> </table>";
 
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 addimgck.php file. The file addimgck.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 upimg )

Code: Select all

while(list($key,$value) = each($_FILES[images][name]))
{
if(!empty($value)){   // this will check if any blank field is entered
$filename = $value;    // filename stores the value

$filename=str_replace(" ","_",$filename);// Add _ inplace of blank space in file name, you can remove this line

$add = "upimg/$filename";   // upload directory path is set
//echo $_FILES[images][type][$key];     // uncomment this line if you want to display the file type
// echo "<br>";                             // Display a line break
copy($_FILES[images][tmp_name][$key], $add);     //  upload the file to the server
chmod("$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.
So you may need to read How to increase/decrease the max execution time in PHP.
Post Reply

Return to “PHP & MySQL”