2
\$\begingroup\$

I am a young programmer with the ability to learn more. I created a public site where a user can upload multiple pictures at once. The code works successfully and inserts the images into a MySQL database. As I improved the code further by reducing the size of multiple uploaded pictures at once, only one picture was uploaded into the folder and MySQL. Could anyone please help me on this? Is there any style or code to reduce the size of multiple images uploaded by the user?

DS in my code is DIRECTORY_SEPARATOR define in initialize file.

if(isset($_POST['submitImage']))
{
    $file = $_FILES['upload'];
    $errors = array();

    if(empty($file))
    {
        $errors[] = ' The file could not be empty ';
    }
    else
    {
        foreach( $file['name'] as $key => $value )
        {
            $extensions = array("jpeg","jpg","png"); 
            $file_ext=explode('.',$file['name'][$key]);
            $file_ext=end($file_ext);
            //$file_ext=strtolower(end(explode('.',$file['name'][$key])));

            if(in_array($file_ext,$extensions ) === false)
            {
                $errors[] = "extension not allowed";
            }
            else
            {
                $filetmp = $file['tmp_name'][$key];
                $terget_path = SITE_ROOT.'j2reimage'.DS.'image'.DS;
                $dat = strftime("%Y-%m-%d %H:%M:%S", time());

                if(file_exists($terget_path))
                {
                    //move_uploaded_file( $filetmp, $terget_path.'/'.$file['name'][$key]);              
                    mysql_query("insert into 4j2memberimage values ('', $memmem->id,'{$file['name'][$key]}', '$dat')"); 

                    if(move_uploaded_file($filetmp, $terget_path.'/'.$file['name'][$key] ))
                    {                   
                        $exe = explode(".", $file['name'][$key]);
                        $ext = $exe[1];
                        $w = 250;
                        $h = 250;
                        $target  = $terget_path.DS.$file['name'][$key];                 
                        $newcopy = SITE_ROOT.'j2reimage'.DS.'reCopy'.DS.$file['name'][$key];
                        list($w_orig, $h_orig) = getimagesize($target);
                        $scale_ratio = $w_orig / $h_orig;

                        if (($w / $h) > $scale_ratio)
                        {
                            $w = $h * $scale_ratio;
                        }
                        else
                        {
                            $h = $w / $scale_ratio;
                        }

                        $img = "";
                        $ext = strtolower($ext);

                        if ($ext == "gif")
                        { 
                            $img = imagecreatefromgif($target);
                        }
                        else if($ext =="png")
                        { 
                            $img = imagecreatefrompng($target);
                        }
                        else
                        {
                            $img = imagecreatefromjpeg($target);
                        }

                        $tci = imagecreatetruecolor($w, $h);
                        imagecopyresampled($tci, $img, 0, 0, 0, 0, $w, $h, $w_orig, $h_orig);

                        if(@imagejpeg($tci, $newcopy, 80))
                        {
                            //return true;
                            $terger_path = $target; 
                            //$terger_path = SITE_ROOT.DS.$this->img_path.DS.$this->filename;
                            return unlink($terger_path) ? true : false;                     
                        }
                    }
                    //end of if file_exists     
                }
                else
                {
                    $errors[] = 'Upload extention could not be located';            
                }
            }
            //redirect_to('inb.php');                   
        }
    }
}
\$\endgroup\$

closed as off-topic by Paul, Jamal, Nikita B, Brian Reichle, Simon Forsberg Nov 19 '13 at 12:27

This question appears to be off-topic. The users who voted to close gave this specific reason:

  • "Questions must contain working code for us to review it here. For questions regarding specific problems encountered while coding, try Stack Overflow. After your code is working you can edit this question for reviewing your working code." – Paul, Jamal, Nikita B, Brian Reichle, Simon Forsberg
If this question can be reworded to fit the rules in the help center, please edit the question.

2
\$\begingroup\$

In your HTML View you can use this <file name="upload[]" accept="image/*" multiple> multiple and accept attribute is only available in HTML5 dosen't work in old browsers.

<?php
    $files = null;
    $errors = null;

    define('IMAGE_TARGET',SITE_ROOT.'j2reimage'.DS.'image');

    if(!empty($_POST['submitImage']))
    {
        $files = $_FILES['upload'];
        $errors = array();

        if(!empty($files))
        {
            //Move extension list to here you don't need redeclarate variables inside loop
            $valid_extensions = array('jpeg','jpg','png','gif'); 

            foreach($files as $file)
            {

                    //Don't use explode for extensions
                    //$file_ext = explode('.',$file['name'][$key]);
                    //Use pathinfo
                    $path_parts = pathinfo($file);                
                    $file_ext = $path_parts['extension'];

                    //$file_ext=strtolower(end(explode('.',$file['name'][$key])));

                    if(in_array($file_ext,$valid_extensions) === false)
                    {
                        $errors[] = ".$file_ext extension not allowed";
                    }
                    else
                    {
                        $filetmp = $file['tmp_name'][$key];

                        $dat = strftime("%Y-%m-%d %H:%M:%S", time());

                        if(file_exists(IMAGE_TARGET.DS.$file['name']))
                        {
                            //move_uploaded_file( $filetmp, $terget_path.'/'.$file['name'][$key]);              
                            mysql_query("INSERT INTO 4j2memberimage VALUES ('', $memmem->id,'{$file['name']}', '$dat')"); 

                            //if(move_uploaded_file($filetmp, $terget_path.'/'.$file['name'][$key] ))

                            //Use copy insteds of  move_uploaded_file sometimes you have right problems in some servers.

                            if(copy($filetmp, IMAGE_TARGET.DS.$file['name'] ))
                            {                   
                                $exe = explode(".", $file['name']);
                                $ext = $exe[1];
                                $w = 250;
                                $h = 250;
                                $target  = IMAGE_TARGET.DS.$file['name'];                 
                                $newcopy = IMAGE_TARGET.DS.'thumb_'.DS.$file['name'];

                                list($w_orig, $h_orig) = getimagesize($target);
                                $scale_ratio = $w_orig / $h_orig;

                                if (($w / $h) > $scale_ratio)
                                {
                                    $w = $h * $scale_ratio;
                                }
                                else
                                {
                                    $h = $w / $scale_ratio;
                                }

                                $img = '';
                                $ext = strtolower($ext);

                                switch($ext) {
                                    case 'gif':
                                        $img = imagecreatefromgif($target); 
                                        break;
                                    case 'png':
                                        $img = imagecreatefrompng($target); 
                                        break;
                                    case 'jpeg':
                                    case 'jpg':
                                        $img = imagecreatefromjpeg($target);
                                        break;                                                              
                                }

                                $tci = imagecreatetruecolor($w, $h);
                                imagecopyresampled($tci, $img, 0, 0, 0, 0, $w, $h, $w_orig, $h_orig);

                                if(@imagejpeg($tci, $newcopy, 80))
                                {
                                    //return true;
                                    $target_path = $target; 
                                    //$terger_path = SITE_ROOT.DS.$this->img_path.DS.$this->filename;
                                    file_put_contents($target_path,$img);
                                    //return unlink($target_path) ? true : false;                     
                                }
                            }
                            //end of if file_exists     
                        }
                        else
                        {
                            $errors[] = 'Upload extention could not be located';            
                        }
                    }
                    //redirect_to('inb.php');                   
                }//foreach      
        }
        else
        {
            $errors[] = ' The file could not be empty ';            
        }//if
    }//if
\$\endgroup\$

Not the answer you're looking for? Browse other questions tagged or ask your own question.