PHP 上传多个图像并事先检查其文件扩展名


PHP Upload multiple images and check their file extensions prior

>我有以下代码将文件上传到文件夹,根据文件输入上传文件重命名,例如第一个输入 - 图片重命名为 picture01.jpg,第 5 个输入 - 图片重命名为图片 picture01.jpg,等等......

<form action="upload_file.php" enctype="multipart/form-data" method="POST">
    <p><input name="image01" type="file"> </p>
    <p><input name="image02" type="file"> </p>
    <p><input name="image03" type="file"> </p>
    <p><input name="image04" type="file"> </p>
    <p><input name="image05" type="file"> </p>
    <input type="submit" value="Upload File">
</form>

这是upload_file.php——

<?php 
$pic_names = array (
    '01' => 'picture01',
    '02' => 'picture02',
    '03' => 'picture03',
    '04' => 'picture04',
    '05' => 'picture05',
                    );

$folder = "temp_images/"; 
if(preg_match("/(jpg|jpeg|png|gif|mp3|mp4)/",$ext)) {
// Picture01
$image_path01 = $folder . $pic_names['01'] . '.jpg';
move_uploaded_file($_FILES['image01']['tmp_name'], $image_path01);
// Picture02
$image_path02 = $folder . $pic_names['02'] . '.jpg';
move_uploaded_file($_FILES['image02']['tmp_name'], $image_path02);
// Picture03
$image_path03 = $folder . $pic_names['03'] . '.jpg';
move_uploaded_file($_FILES['image03']['tmp_name'], $image_path03);
// Picture04
$image_path04 = $folder . $pic_names['04'] . '.jpg';
move_uploaded_file($_FILES['image04']['tmp_name'], $image_path04);
// Picture05
$image_path05 = $folder . $pic_names['05'] . '.jpg';
move_uploaded_file($_FILES['image05']['tmp_name'], $image_path05);
    echo 'Uploaded successfully!';
   } else { echo 'Uploaded successfully!';}
    ?>

我想检查一下,在上传文件之前,检查是否存在以下扩展名之一,然后再上传 jpg、gif 或 png。如果他们有另一个扩展名,则不会上传并给出错误。

我设法找到的唯一解决方案是当输入名称=">图像"类型="文件"时>具有相同的名称,例如在本例中为名称。如何为我的案例使用不同的输入名称执行此操作?

我收到以下错误:PHP 解析错误:语法错误,意外T_ELSE

虽然我确信它不仅仅是一个解析错误。

请提供任何建议或帮助?

更新:我修改了代码,但它告诉我任何图像格式的"文件类型错误!

错误在字符串echo 'Uploaded successfully!';{位置和内容中。

1(}else之间不允许任何陈述。

2('Uploaded successfully!';{包含多余的{

更新:处理上传文件的一种很好的方法之一。取决于 OP 中的 $pic_names 数组。

$pic_names = array (
    '01' => 'picture01',
    '02' => 'picture02',
    '03' => 'picture03',
    '04' => 'picture04',
    '05' => 'picture05',
);
$allowed_mime = array(
    'image/jpeg' => 'jpg',
    'image/pjpeg' => 'jpg',
    'image/gif' => 'gif',
    'image/png' => 'png',
);
$upload_messages = array(
    UPLOAD_ERR_OK => ' Uploaded successfully!',
    UPLOAD_ERR_INI_SIZE => ' The uploaded file exceeds the maxumum size of ' . ini_get('upload_max_filesize') . '.',
    UPLOAD_ERR_PARTIAL => ' The uploaded file was only partially uploaded.',
    UPLOAD_ERR_NO_FILE => ' No file was uploaded',
    UPLOAD_ERR_NO_TMP_DIR => ' Missing a temporary folder.',
    UPLOAD_ERR_CANT_WRITE => ' Failed to write file to disk.',
    UPLOAD_ERR_EXTENSION => ' A PHP extension stopped the file upload.',
    100 => ' Wrong file type.',
);
$folder = "temp_images/"; 
$error_message = $success_message = '';
$upload_counter = 0;
foreach ($pic_names as $key => $value) {
    if (isset($_FILES['image'.$key]) && !$_FILES['image'.$key]['error']) {
        $file_mime = getFileMime($_FILES['image'.$key]['tmp_name']);
        if ( in_array($file_mime, array_keys($allowed_mime)) ) {
            $new_path = $folder . $value . '.' . $allowed_mime[$file_mime];
            if ( !move_uploaded_file($_FILES['image'.$key]['tmp_name'], $new_path) ) {
                $error_message .= ' Image' . $key . ':' . $upload_messages[UPLOAD_ERR_CANT_WRITE];
            } else {
                $upload_counter++;
            }
        } else {
            $error_message .= ' Image' . $key . ':' . $upload_messages[100];
        }
    } else {
        $error_message .= ' Image' . $key . ':' . ($_FILES['image'.$key]['error'] ? $upload_messages[$_FILES['image'.$key]['error']] : $upload_messages[UPLOAD_ERR_NO_FILE]);
    }
}
if ( $upload_counter == count($pic_names) ) {
    echo $upload_messages[UPLOAD_ERR_OK];
} else {
    echo 'Loaded ' . $upload_counter . ' file' . ($upload_counter != 1 ? 's' : '') . '.' . $error_message;
}
function getFileMime ($file) {
    if (PHP_VERSION >= '5.3.0') {
        $finfo = new finfo(FILEINFO_MIME_TYPE);
        return $finfo->file($file);
    } else {
        return mime_content_type($file);
    }
}

更改

echo 'Uploaded successfully!';{
else { echo 'Uploaded successfully!';}

echo 'Uploaded successfully!';
} else { echo 'Wrong file type';}