SimonGillham Posted January 16, 2018 Share Posted January 16, 2018 I have the below HTML and PHP code for uploading multiple files, but for some reason only 1 file is being uploaded. Does anyone know why? Many Thanks Simon <!DOCTYPE html><html><body><form action="upload.php" method="post" enctype="multipart/form-data"> Select image to upload: <input type="file" name="fileToUpload" id="fileToUpload" multiple> <input type="submit" value="Upload Image" name="submit"></form></body></html> The PHP is <?php$target_dir = "uploads/";$target_file = $target_dir . basename($_FILES["fileToUpload"]["name"]);$uploadOk = 1;$imageFileType = strtolower(pathinfo($target_file,PATHINFO_EXTENSION));// Check if image file is a actual image or fake imageif(isset($_POST["submit"])) { $check = getimagesize($_FILES["fileToUpload"]["tmp_name"]); if($check !== false) { echo "File is an image - " . $check["mime"] . "."; $uploadOk = 1; } else { echo "File is not an image."; $uploadOk = 0; }}// Check if file already existsif (file_exists($target_file)) { echo "Sorry, file already exists."; $uploadOk = 0;}// Check file sizeif ($_FILES["fileToUpload"]["size"] > 500000) { echo "Sorry, your file is too large."; $uploadOk = 0;}// Allow certain file formatsif($imageFileType != "jpg" && $imageFileType != "png" && $imageFileType != "jpeg"&& $imageFileType != "gif" ) { echo "Sorry, only JPG, JPEG, PNG & GIF files are allowed."; $uploadOk = 0;}// Check if $uploadOk is set to 0 by an errorif ($uploadOk == 0) { echo "Sorry, your file was not uploaded.";// if everything is ok, try to upload file} else { if (move_uploaded_file($_FILES["fileToUpload"]["tmp_name"], $target_file)) { echo "The file ". basename( $_FILES["fileToUpload"]["name"]). " has been uploaded."; } else { echo "Sorry, there was an error uploading your file."; }}?> Link to comment Share on other sites More sharing options...
Ingolme Posted January 16, 2018 Share Posted January 16, 2018 If I remember correctly, if you change the name of the input to "fileToUpload[]" it should arrive as an array in PHP. If that worked correctly, on the server side the $_FILES array actually has the indices on the second component. Instead of $_FILES["fileToUpload"][0]["size"] you actually have to access $_FILES["fileToUpload"]["size"][0]. Link to comment Share on other sites More sharing options...
SimonGillham Posted January 17, 2018 Author Share Posted January 17, 2018 When I add the square brackets into "fileToUpload[]" it then jumps to the section about the image type not being a JPG, etc. Are you able to post the HTML code and PHP code to show what it should look like? I am quite a newbie to HTML and PHP, apologies. Link to comment Share on other sites More sharing options...
dsonesuk Posted January 17, 2018 Share Posted January 17, 2018 Because its not an image, its an array of images, you need to setup a foreach loop to get each image file foreach ($_FILES["fileToUpload"]["name"] as $index => $imageFile) { $target_file = $target_dir . basename($_FILES["fileToUpload"]["name"][$index]); ... } Every $_FILES["fileToUpload"]["?????"] within foreach loop has to end with [$index] as shown above, this tell it what image in the array is being processed. Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now