Uploading multiple files and processing them

Collapse
X
 
  • Time
  • Show
Clear All
new posts
  • wilcochris
    New Member
    • Jul 2014
    • 2

    Uploading multiple files and processing them

    Hi all,

    Just after some advice really. This is my first time posting on here, so please forgive me if my post isn't up to the required standard.

    I have a form for emailing someone and it also allows the option to add file attachments. I have it working so that it will move a single file and email it and add the details to the database.

    When I try with multiple files, it will only ever process the last file in the array.

    This is what I have in the form

    Code:
    <input type="file" name="attachment[]" id="attachment" multiple/>
    This is what I have in the PHP code for processing the file

    Code:
    if(is_array($fdata['name']))
    {
    	for($i = 0; $i < count($fdata['name']); ++$i)
    	{
    		$name_of_file = $_FILES['attachment']['name'][$i];
    		$file_name = $guid."-".$name_of_file;
    		$temp_name = $_FILES['attachment']['tmp_name'][$i];
    		$file_type = $_FILES['attachment']['type'][$i];
    		$file_size = $_FILES['attachment']['size'][$i];
    	}
    }
    else $files[] = $fdata;
    This will process only the last file.

    If I put the following in the for loop, it will move the files as requested, but will not allow any other processing on it

    Code:
    $pics = array(".bmp", ".gif", ".jpg", "jpeg", ".png"); //5
    $docs = array(".doc", "docx", ".odt", ".pdf", ".ppt", "pptx", ".rtf", ".txt", ".xls", "xlsx"); //10
    $misc = array(".csv", ".htm", "html", ".php", ".pkt", ".rar", ".sql", ".xpi", ".zip"); //9
    						
    $base = basename($file_name);
    $extension = substr($base, strlen($base)-4, strlen($base));
    $extension = strtolower($extension);
    						
    if (in_array($extension,$pics))
    {
    	$target = "".FILES."/".FUP_PICS."/";
    }
    						
    if (in_array($extension,$docs))
    {
    	$target = "".FILES."/".FUP_DOCS."/";
    }
    							
    if (in_array($extension,$misc))
    {
    	$target = "".FILES."/".FUP_MISC."/";
    }
    						
    $target = $target.$base;
    						
    $allowed_extensions = array(".bmp", ".csv", ".doc", "docx", ".gif", ".htm", "html", ".jpg", ".JPG", "jpeg", "JPEG", ".odt", ".pdf", ".php", ".pkt", ".png", ".ppt", "pptx",	".rtf", ".sql", ".txt", ".xls", "xlsx", ".zip");
    This will then not allow me to access the variables outside the loop so I can further process it (email the file, add the details to the database0.

    If I wrap it all in the for loop then it will only process the last file in the array.

    I am somewhat stuck on the issue now.

    I have tried a foreach loop, but it won't get the value of the variable in the file array to use for processing.

    I will attach my file so you can see what I have there as it is around 800 lines long.

    I'm looking for some pointers as to where I may be going wrong.

    Thanks in advance
    Attached Files
Working...