我有这样一个表单:
<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' );