1

How to upload multiple images using PHP? This code working fine for upload single file, but need add function for upload multiple images.

<?php
$result = 0;
define('FORUM_PATH', 'full_patch');
require_once (FORUM_PATH . 'api_member_login.php');
$ipbMemberLoginApi = new apiMemberLogin();
$ipbMemberLoginApi->init();
$member = $ipbMemberLoginApi->getMember();
$id = ($member['member_id']);
$foldername = date("Y_m_d");
$uploads_folder = "uploads";
$upload_folder = "uploads/$id/$foldername";
if (file_exists($upload_folder)) {
} else {
    mkdir("$uploads_folder/$id", 0755);
    mkdir("$upload_folder", 0755);
}
if (is_uploaded_file($_FILES['myfile']['tmp_name']) && ($_FILES["myfile"]["size"] <= 18192 * 1 * 18192)) {
    $enabled = array(IMAGETYPE_PNG, IMAGETYPE_JPEG, IMAGETYPE_PNG, IMAGETYPE_GIF);
    list($width, $height, $extension) = getimagesize($_FILES['myfile']['tmp_name']);
    if (in_array($extension, $enabled)) {
        $newname = uniqid() . "_" . $_FILES['myfile']['name'];
        $imglink = $upload_folder . '/' . $newname;
        if (@move_uploaded_file($_FILES['myfile']['tmp_name'], "$upload_folder/" . $newname)) 
            include ("class.ExifCleaning.php");
        ExifCleaning::adjustImageOrientation($imglink);
        $max_width = 1024;
        $max_height = 800;
        $im = new Imagick();
        $im->readImage($imglink);
        $im->stripImage();
        $im->resizeImage(min($im->getImageWidth(), $max_width), min($im->getImageHeight(), $max_height), imagick::FILTER_CATROM, 1, true);
        if (file_put_contents($imglink, $im)) {
            require ('watermarkImagick.php');
            $result = 1;
        }
    } else {
        $result = 0;
    }
}
?>

HTML:

    <form id="imgUplForm" action="api.php" method="post" enctype="multipart/form-data" target="upload_target" onchange="startUpload();">
    <div id="imageUpload">Upload
        <p id="myf1_upload_process"><img src="uploadstat.gif" border="0" /></p>
        <p id="myf1_upload_form" align="left">
            <input type="file" id="file_browse" name="myfile" onchange="this.form.submit()" accept="image/*" />
        </p>
    </div>
    <iframe id="upload_target" name="upload_target" style="display:none;width:0;height:0;border:0px solid #fff;"></iframe>
</form>

After upload added some functions, ex.: Resize, Exif Cleaning... Need all this functions for uploaded images.

1 Answer 1

1

You can upload multiple files in this way

  1. Input field must be defined as an array i.e. images[]

  2. It should be defined as multiple="multiple"

    <input name="images[]" type="file" multiple="multiple" />
    
    // Count # of uploaded files in array
    $total = count($_FILES['images']['name']);
    
    // Loop through each file
    for( $i=0 ; $i < $total ; $i++ ) {
    
      //Get the temp file path
      $tmpFilePath = $_FILES['images']['tmp_name'][$i];
    
      //Make sure we have a file path
      if ($tmpFilePath != ""){
      //Setup our new file path
      $newFilePath = "./uploadFiles/" . $_FILES['images']['name'][$i];
    
    //Upload the file into the temp dir
    if(move_uploaded_file($tmpFilePath, $newFilePath)) {
    
      //Handle other code here
    
     }
     }
    }
    

For more details PHP Multiple Upload

Sign up to request clarification or add additional context in comments.

1 Comment

Thank you for your attention. Unfortunately I can not... :(

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.