Solved

Turning this upload script from "1 file upload capable" to "multi-file upload capable"

Posted on 2008-10-13
9
329 Views
Last Modified: 2012-06-21
Hi everyone hope you are all well.
Guys I have the following php script, that currently is only 1-file-upload capable.
Id like to modify it so that it is mulit-file upload capable....let's say 5 at a time.

I have included the script in the code snippet.
Any help greatly appreciated.
=========================================== upload.php:
 
<!-- ******************************************************
HTML FORM SECTION:
*********************************************************** -->
 
<form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post" enctype="multipart/form-data">
   <p>
      <label for="file">Select a file:</label> 
      <input type="file" name="userfile" id="file"><br />
      <input type="submit" value="Submit" />
   <p>
</form>
 
 
<!-- ******************************************************
UPLOAD SECTION:
*********************************************************** -->
 
<?php
      $allowed_filetypes = array('.jpg','.gif','.bmp','.png'); 					
      $max_filesize = 524288; 																
      $upload_path = './files/'; 															
 
   	$filename = $_FILES['userfile']['name']; 											
   	$ext = substr($filename, strpos($filename,'.'), strlen($filename)-1); 
 
  		if(!in_array($ext,$allowed_filetypes))
     		die('The file you attempted to upload is not allowed.');
 
   	if(filesize($_FILES['userfile']['tmp_name']) > $max_filesize)
      	die('The file you attempted to upload is too large.');
 
   	if(!is_writable($upload_path))
      	die('You cannot upload to the specified directory, please CHMOD it to 777.');
   	
   	if(move_uploaded_file($_FILES['userfile']['tmp_name'],$upload_path . $filename))
         echo 'Your file upload was successful, view the file <a href="' . $upload_path . $filename . '" title="Your File">here</a>'; 
      else
         echo 'There was an error during the file upload.  Please try again.'; 
  
?>

Open in new window

0
Comment
Question by:Simon336697
[X]
Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

  • Help others & share knowledge
  • Earn cash & points
  • Learn & ask questions
9 Comments
 
LVL 5

Assisted Solution

by:jericotolentino
jericotolentino earned 30 total points
ID: 22700827
See example three of the PHP documentation on handling file uploads:

http://www.php.net/file_upload
0
 
LVL 17

Accepted Solution

by:
psimation earned 440 total points
ID: 22700837
Well, just duplicate the code for more instances of the file input boxes...

I've started to give you an idea of what I mean in the code snippet - just carry on doing the same - ie, make 4 more $ext{2...5} where you substitute $filename for the $filename2...#filename5 etc.

most importantly is the 4 extra "if" statements for each of the new files:

if(move_uploaded_file($_FILES['userfile2']['tmp_name'],$upload_path . $filename)){
}
if(move_uploaded_file($_FILES['userfile3']['tmp_name'],$upload_path . $filename)){
}
etc.


=========================================== upload.php:
 
<!-- ******************************************************
HTML FORM SECTION:
*********************************************************** -->
 
<form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post" enctype="multipart/form-data">
   <p>
      <label for="file">Select a file:</label> 
      <input type="file" name="userfile" id="file"><br />
<input type="file" name="userfile2" id="file"><br />
<input type="file" name="userfile3" id="file"><br />
<input type="file" name="userfile4" id="file"><br />
<input type="file" name="userfile5" id="file"><br />
      <input type="submit" value="Submit" />
   <p>
</form>
 
 
<!-- ******************************************************
UPLOAD SECTION:
*********************************************************** -->
 
<?php
      $allowed_filetypes = array('.jpg','.gif','.bmp','.png');                                  
      $max_filesize = 524288;                                                                                                                           
      $upload_path = './files/';                                                                                                                        
 
        $filename = $_FILES['userfile']['name'];
$filename2 = $_FILES['userfile2']['name'];
$filename3 = $_FILES['userfile3']['name'];
$filename4 = $_FILES['userfile4']['name'];
$filename5 = $_FILES['userfile5']['name'];                                                                                        
        $ext = substr($filename, strpos($filename,'.'), strlen($filename)-1); 
 
                if(!in_array($ext,$allowed_filetypes))
                die('The file you attempted to upload is not allowed.');
 
        if(filesize($_FILES['userfile']['tmp_name']) > $max_filesize)
        die('The file you attempted to upload is too large.');
 
        if(!is_writable($upload_path))
        die('You cannot upload to the specified directory, please CHMOD it to 777.');
        
        if(move_uploaded_file($_FILES['userfile']['tmp_name'],$upload_path . $filename))
         echo 'Your file upload was successful, view the file <a href="' . $upload_path . $filename . '" title="Your File">here</a>'; 
      else
         echo 'There was an error during the file upload.  Please try again.'; 
  
?>

Open in new window

0
 
LVL 15

Assisted Solution

by:babuno5
babuno5 earned 30 total points
ID: 22700945
may be you can try this also for multiple file uploads which requires flash

http://www.element-it.com/DEMOMULTIPOW.aspx
0
MS Dynamics Made Instantly Simpler

Make Your Microsoft Dynamics Investment Count  & Drastically Decrease Training Time by Providing Intuitive Step-By-Step WalkThru Tutorials.

 
LVL 1

Author Comment

by:Simon336697
ID: 22700957
Hi psimation,
Thanks for that.
Is there any way instead of duplicating the code, to loop through files for multiple input boxes?
0
 
LVL 17

Expert Comment

by:psimation
ID: 22701023
Yes, you could put the current code into a foreach loop and step through each $_POST variable to get the names of the form fields, but you would then need to call your file input boxes something unique/easy to check for, since $_POST will contain all form elements.

So, you could do something like this maybe:





foreach($_POST as $key=>$val) {
 
if (($val == "userfile1")||($val=="userfile2")||($val=="userfile3")||($val=="userfile4")||($val=="userfile5")){
$filename = $_FILES[$val]['name'];
$ext = substr($filename, strpos($filename,'.'), strlen($filename)-1); 
 
if(!in_array($ext,$allowed_filetypes))
 die('The file you attempted to upload is not allowed.');
 
if(filesize($_FILES[$val]['tmp_name']) > $max_filesize)
 die('The file you attempted to upload is too large.');
 
if(!is_writable($upload_path))
 die('You cannot upload to the specified directory, please CHMOD it to 777.');
       if(move_uploaded_file($_FILES[$val]['tmp_name'],$upload_path . $filename))
         echo 'Your file upload was successful, view the file <a href="' . $upload_path . $filename . '" title="Your File">here</a>'; 
      else
         echo 'There was an error during the file upload.  Please try again.';
}
} 

Open in new window

0
 
LVL 1

Author Comment

by:Simon336697
ID: 22701333
psimation, thats great...thanks so much for your skillful answers...really appreciate it psimation.
0
 
LVL 1

Author Comment

by:Simon336697
ID: 22701336
Thanks also to:
jericotolentino and babuno5
0
 
LVL 17

Expert Comment

by:psimation
ID: 22701359
No Problem Simon

Just remember to close the question by accepting one or more of the comments as solutions - else the question will remain open on the system.
0
 
LVL 1

Author Closing Comment

by:Simon336697
ID: 31505551
Thank you guys :>)
0

Featured Post

Secure Your WordPress Site: 5 Essential Approaches

WordPress is the web's most popular CMS, but its dominance also makes it a target for attackers. Our eBook will show you how to:

Prevent costly exploits of core and plugin vulnerabilities
Repel automated attacks
Lock down your dashboard, secure your code, and protect your users

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

This article discusses how to create an extensible mechanism for linked drop downs.
Introduction This article is intended for those who are new to PHP error handling (https://www.experts-exchange.com/articles/11769/And-by-the-way-I-am-New-to-PHP.html).  It addresses one of the most common problems that plague beginning PHP develop…
Learn how to match and substitute tagged data using PHP regular expressions. Demonstrated on Windows 7, but also applies to other operating systems. Demonstrated technique applies to PHP (all versions) and Firefox, but very similar techniques will w…
The viewer will learn how to look for a specific file type in a local or remote server directory using PHP.

691 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question