Uploading multiple images with one input field
<form method="post" action="" enctype="multipart/form-data">
<input type="hidden" name="MAX_FILE_SIZE" value="500000">
Add Photos <input multiple="true" onchange="this.form.submit()" type="file" name="photos[]"/>
<input type="hidden" name="sendfiles" value="Send Files" />
</form>
<?php
define ("MAX_SIZE","5000");
function getExtension($str)
{
$i = strrpos($str,".");
if (!$i) { return ""; }
$l = strlen($str) - $i;
$ext = substr($str,$i+1,$l);
return $ext;
}
$errors=0;
if(isset($_POST['sendfiles']))
{
$uploaddir = "files/"; //a directory inside
foreach ($_FILES['photos']['name'] as $name => $value)
{
$filename = stripslashes($_FILES['photos']['name'][$name]);
//get the extension of the file in a lower case format
$extension = getExtension($filename);
$extension = strtolower($extension);
echo "\n This is the extension: ",$extension;
if (($extension != "jpg") && ($extension != "jpeg") && ($extension != "png") && ($extension != "gif"))
{
//print error message
?>
<h4>Unknown extension!</h4>
<?php
$errors=1;
}
else
{
$size=filesize($_FILES['photos']['tmp_name'][$name]);
if ($size > MAX_SIZE*1024)
{
?>
<h4>You have exceeded the size limit!</h4>
<?php
$errors=1;
}
$image_name=$filename.'.'.$extension;
$newname="files/".$image_name;
$copied = copy($_FILES['photos']['tmp_name'][$name], $newname);
if (!$copied)
{
?>
<h4>Copy unsuccessfull!</h4>
<?php
$errors=1;
}
}
}
//echo "Images uploaded successfully";
}
//mysql_close($dbhandle);
?>
You are probably looking for something like uploadify or swfupload or plupload.
It works as-if there were multiple file fieldsDocs, it's transparent to PHP. Here is some simple example code:
<html>
<body>
<form action="" method="post" enctype="multipart/form-data">
<input type="file" name="fileField[]" id="fileField" multiple="multiple">
<input type="text" name="test" value="test">
<input type="submit" name="submit">
</form>
</body>
</html>
<?php
var_dump($_FILES, $_POST);
Store it on your host and request it. You can then play around with it, it will show you the structure of the $_FILES
and $_POST
array.
Example output:
array
'fileField' =>
array
'name' =>
array
0 => string 'hakre-iterator-fun-cut-top.png' (length=30)
1 => string 'hakre-iterator-fun-cut-middle.png' (length=33)
'type' =>
array
0 => string 'image/png' (length=9)
1 => string 'image/png' (length=9)
'tmp_name' =>
array
0 => string '/tmp/php1A2.tmp' (length=15)
1 => string '/tmp/php1A3.tmp' (length=15)
'error' =>
array
0 => int 0
1 => int 0
'size' =>
array
0 => int 234001
1 => int 213058
array
'test' => string 'test' (length=4)
'submit' => string 'Submit' (length=6)
See Uploading multiple filesDocs.