PHP загрузить входной массив и как узнать, сколько файлов? - PullRequest
3 голосов
/ 20 сентября 2011

У меня есть эта форма:

<form enctype="multipart/form-data" action="upload.php" method="POST">
    <input type="file" name="photo[]" />
    <input type="file" name="photo[]" />
</form>

И я загружаю файлы с помощью php следующим образом:

function upFiles($files){
    for($i = 0 ; $i < $files ; $i++){
        $FV_filename = $_FILES['photo']['name'][$i];
        $fileTYPE = substr($FV_filename , -4);
        move_uploaded_file($_FILES['photo']['tmp_name'][$i], uniqid().$fileTYPE);
    }
}

upFiles($_POST['howManyFiles']);

Как вы видите, я получаю со стороны клиента, сколько файловбыл отправлен.Что я хочу сделать, это проверить на стороне сервера, сколько файлов было получено.Как я могу это сделать?Есть ли встроенная функция php, если нет, то как ее создать?

Ответы [ 3 ]

3 голосов
/ 20 сентября 2011
count( $_FILES['photo']['name'] );

должно работать. В качестве альтернативы просто переписайте ваш for цикл в foreach:

foreach ( $_FILES as $name => $file ) {
    var_dump( $file );
    // process file...
}
0 голосов
/ 20 сентября 2011

Итерация по массиву $ _FILES:

function upFiles( $baseVarName ){

    foreach( $_FILES[ $baseVarName ] as $fileDetails ) {

        $FV_filename = $fileDetails['name'][$i];
        $fileTYPE = substr($FV_filename , -4);
        move_uploaded_file( $fileDetails['tmp_name'][$i], uniqid().$fileTYPE);

    }

}

upFiles( 'photo' );
0 голосов
/ 20 сентября 2011

Вы можете проверить, был ли файл загружен с помощью is_uploaded_file, например:

function upFiles($files){
    for($i = 0 ; $i < $files ; $i++){
        if (is_uploaded_file($_FILES['photo']['tmp_name'][$i])) {
            // uploaded file
        }
    }
}

Вы можете использовать foreach для циклического перебора всех загруженных фотографий вместо использования магического числа .

От: php.net

...