Сценарий загрузки нескольких файлов с созданием миниатюр не работает, не получая ошибок - PullRequest
0 голосов
/ 20 февраля 2012

Скрипт ниже не работает. Не получаю никаких сообщений об ошибках php. Если бы я задал похожий вопрос, изменил вокруг создания миниатюр, и если бы я обновил этот вопрос, его бы вообще не было.

Код не проходит проверку типа файла. Тип ввода файла имеет имя мультифайла [].

if ((($_FILES['multifile']['type'][$key] == "image/png") || 
        ($_FILES['multifile']['type'][$key] == "image/jpeg") || 
        ($_FILES['multifile']['type'][$key] == "image/pjpeg") && 
        ($_FILES['multifile']['size'][$key] < 2097152)))
    {

        if(count($_FILES['multifile']['name'])) 
        {
            foreach ($_FILES['multifile']['name'] as $key => $filename)
            {

                $filename = time().'_'.$_FILES['multifile']['name'];  
                $source = $_FILES['multifile']['tmp_name'];  
                $target = 'uploads/'.$filename;  

                if(move_uploaded_file ($_FILES['multifile']['tmp_name'][$key],$target))
                {
                    createThumbnail($filename);  

                    //database insert here

                    echo '<div class="success" style="margin-right:25px;">Images added, view individual album to edit image descriptions</div>';
                }
            }
        }
    }

    else
    {
        echo '<div class="error">Invalid file, only jpg, jpeg, or png file types allowed</div>';
    }

Вот print_r из $ _FILES

Array ( [name] => Array ( [0] => image1.png [1] => image2.png ) [type] => Array ( [0] => image/png [1] => image/png ) [tmp_name] => Array ( [0] => /tmp/php1rPxh5 [1] => /tmp/phpsGsA2I ) [error] => Array ( [0] => 0 [1] => 0 ) [size] => Array ( [0] => 27594 [1] => 24466 ) )

1 Ответ

1 голос
/ 20 февраля 2012

измените ваш if на этот

 if ((($_FILES['multifile']['type'][$key] == "image/png") || 
    ($_FILES['multifile']['type'][$key] == "image/jpeg") || 
    ($_FILES['multifile']['type'][$key] == "image/pjpeg")) && 
    ($_FILES['multifile']['size'][$key] < 2097152))

это делает его читаемым как расширение в порядке И если размер в порядке

Я лично считаю, что если вы используете счетчик, то используйте его таким образом

if(count($_FILES['multifile']['name']) >0) 

Также, если возможно, вы можете дать вывод print_r ($ _ FILES ['multifile'])

for($i=0;$i< count($_FILES['multifile']['type']);$i++){
    echo "i:".$i."<br/>";
    if ((($_FILES['multifile']['type'][$i] == "image/png") || 
    ($_FILES['multifile']['type'][$i] == "image/jpeg") || 
    ($_FILES['multifile']['type'][$i] == "image/pjpeg")) && 
    ($_FILES['multifile']['size'][$i] < 2097152))
    {
    echo "icond:".$i."<br/>";

            $filename = time().'_'.$_FILES['multifile']['name'][$i];  
            $target = 'uploads/'.$filename;  

            if(move_uploaded_file ($_FILES['multifile']['tmp_name'][$i],$target))
            {
                createThumbnail($filename);  
                echo '<div class="success" style="margin-right:25px;">Images added, view individual album to edit image descriptions</div>';
            } 
             else
            {
             echo '<div class="error">Invalid file'.$filename.', only jpg, jpeg, or png file types allowed</div>';
             }        
    }
}
...