Meridius Posted August 9, 2012 Share Posted August 9, 2012 Hello, I'm still a bit of a n00b by most standards but learning every day, currently I am working on a script to let the user upload images. Uploading a single file is no problem, that was easily ripped from w3schools. I also got a bit of code that re-sizes images to a maximum of 1920x1080. As the input type also has a "multiple" these days i wanted to make use of that. Easier for the user to use instead of selecting every image seperetly. So instead of just name="file" i made it into: <input type="file" name="file[]" id="file" multiple=""/> Now if i do this: foreach ($_FILES["file"]["name"] as $filename) { echo '<li>' . $filename . '</li>'; } It shows the filenames nicely. The part on which i keep failing is having to put it around the following block of code: $allowedExts = array("jpg", "jpeg", "gif", "png"); $extension = end(explode(".", $_FILES["file"]["name"])); if ((($_FILES["file"]["type"] == "image/gif") || ($_FILES["file"]["type"] == "image/jpeg") || ($_FILES["file"]["type"] == "image/pjpeg")) && ($_FILES["file"]["size"] < 200000000) && in_array($extension, $allowedExts)) { if ($_FILES["file"]["error"] > 0) { echo "Return Code: " . $_FILES["file"]["error"] . "<br />"; } else { echo "Upload: " . $_FILES["file"]["name"] . "<br />"; echo "Type: " . $_FILES["file"]["type"] . "<br />"; echo "Size: " . ($_FILES["file"]["size"] / 1024) . " Kb<br />"; echo "Temp file: " . $_FILES["file"]["tmp_name"] . "<br />"; if (file_exists("upload/" . $_FILES["file"]["name"])) { echo $_FILES["file"]["name"] . " already exists. "; } else { move_uploaded_file($_FILES["file"]["tmp_name"], "upload/" . $_FILES["file"]["name"]); echo "Stored in: " . "upload/" . $_FILES["file"]["name"]; include('ResizeImage.php'); $image = new ResizeImage(); $image->load("upload/" . $_FILES["file"]["name"]); $image->resize(1920,1080); $image->save("upload/" . $_FILES["file"]["name"]); } } } else { echo "Invalid file"; } Like i said, the uploading is ripped from w3schools. I tried several things but my knowledge simply does not reach that far or i just can't see the solution after trying stuff. Any pointers or suggestions would be greatly appreciated! Kind regards//Thanks in advance, Erik Link to comment https://forums.phpfreaks.com/topic/266836-foreach-around-code-for-uploading-files/ Share on other sites More sharing options...
scootstah Posted August 9, 2012 Share Posted August 9, 2012 Which part are you stuck on exactly? Here is a good way to iterate through $_FILES when you have multiple uploads: for($i = 0; $i < count($_FILES['file']['name']); $i++) { echo "Name: {$_FILES['file']['name'][$i]}<br /> Type: {$_FILES['file']['type'][$i]}<br /> Temp name: {$_FILES['file']['tmp_name'][$i]}<br /> Error: {$_FILES['file']['error'][$i]}<br /> Size: {$_FILES['file']['size'][$i]}<br />"; } This way, you can access all of the properties on each iteration without having to have loops for each one, if that makes sense. Link to comment https://forums.phpfreaks.com/topic/266836-foreach-around-code-for-uploading-files/#findComment-1367968 Share on other sites More sharing options...
Meridius Posted August 9, 2012 Author Share Posted August 9, 2012 You good sir, made my day! It was indeed just a simple matter of using the for loop and putting [$i] behind every piece of code that called the $_FILES(). Final working code: <?php include('ResizeImage.php'); for($i = 0; $i < count($_FILES['file']['name']); $i++) { $allowedExts = array("jpg", "jpeg", "gif", "png"); $extension = end(explode(".", $_FILES["file"]["name"][$i])); if ((($_FILES["file"]["type"][$i] == "image/gif") || ($_FILES["file"]["type"][$i] == "image/jpeg") || ($_FILES["file"]["type"][$i] == "image/pjpeg")) && ($_FILES["file"]["size"][$i] < 200000000) && in_array($extension, $allowedExts)) { if ($_FILES["file"]["error"][$i] > 0) { echo "Return Code: " . $_FILES["file"]["error"][$i] . "<br />"; } else { echo "Upload: " . $_FILES["file"]["name"][$i] . "<br />"; echo "Type: " . $_FILES["file"]["type"][$i] . "<br />"; echo "Size: " . ($_FILES["file"]["size"][$i] / 1024) . " Kb<br />"; echo "Temp file: " . $_FILES["file"]["tmp_name"][$i] . "<br />"; if (file_exists("upload/" . $_FILES["file"]["name"][$i])) { echo $_FILES["file"]["name"][$i] . " already exists. "; } else { move_uploaded_file($_FILES["file"]["tmp_name"][$i], "upload/" . $_FILES["file"]["name"][$i]); echo "Stored in: " . "upload/" . $_FILES["file"]["name"][$i]; $image = new ResizeImage(); $image->load("upload/" . $_FILES["file"]["name"][$i]); $image->resize(1920,1080); $image->save("upload/" . $_FILES["file"]["name"][$i]); } } } else { echo "Invalid file"; } } ?> Stupid of me that i did not see it, sometimes i just do not see the trees through the forest in a matter of speech hehe. Thanks again! Link to comment https://forums.phpfreaks.com/topic/266836-foreach-around-code-for-uploading-files/#findComment-1368045 Share on other sites More sharing options...
Recommended Posts
Archived
This topic is now archived and is closed to further replies.