PHP上传输入数组以及如何查找多少个文件


PHP upload input array and how to find how many files?

我有这样一个表单:

<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函数,如果没有,那么如何创建一个?

count( $_FILES['photo']['name'] );

应该工作。或者,只需将for循环重写为foreach:

foreach ( $_FILES as $name => $file ) {
    var_dump( $file );
    // process file...
}

您可以检查文件是否已上载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

遍历 $_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' );