无法回显具有多个变量的多个图像


unable to echo multiple images with multiple variable

我正在从单个输入上传多个图像并重命名所有上传的文件。我的问题是;我需要使用单独的变量显示所有上传的图像

例如:

If user upload 3 images, i need to echo as
$upload1 = 1st file name
$upload2 = 2nd file name
$upload3 = 3rd file anme
No of images uploaded (upload number of file)

这是我当前的代码:

<?php
if (isset($_FILES['files'])) {
    $uploadedFiles = array();
    foreach ($_FILES['files']['tmp_name'] as $key => $tmp_name) {
        $errors = array();
        $file_name = md5(uniqid("") . time());
        $file_size = $_FILES['files']['size'][$key];
        $file_tmp = $_FILES['files']['tmp_name'][$key];
        $file_type = $_FILES['files']['type'][$key];
        if($file_type == "image/gif"){
            $sExt = ".gif";
        } elseif($file_type == "image/jpeg" || $file_type == "image/pjpeg"){
            $sExt = ".jpg";
        } elseif($file_type == "image/png" || $file_type == "image/x-png"){
            $sExt = ".png";
        }
        if (!in_array($sExt, array('.gif','.jpg','.png'))) {
            $errors[] = "Image types alowed are (.gif, .jpg, .png) only!";
        }
        if ($file_size > 2097152000) {
            $errors[] = 'File size must be less than 2 MB';
        }
        $desired_dir = "user_data/";
        if (empty($errors)) {
            if (is_dir($desired_dir) == false) {
                mkdir("$desired_dir", 0700);        // Create directory if it does not exist
            }
            if (move_uploaded_file($file_tmp, "$desired_dir/" . $file_name . $sExt)) {
                $uploadedFiles[$key] = array($_FILES['files']['name'][$key], 1);
            } else {
                echo "Couldn't upload file " . $_FILES['files']['name'][$key];
                $uploadedFiles[$key] = array($_FILES['files']['name'][$key], 0);
            }
        } else {
            print_r($errors);
        }
    }
    foreach ($uploadedFiles as $key => $row) {
        if (!empty($row[1])) {
            $codestr = '$file' . ($key+1) . " = $row[0];";
            eval ($codestr);
        } else {
            $codestr = '$file' . ($key+1) . " = NULL;";
            eval ($codestr);
        }
    }
}
echo $file1;
echo $file2;
echo $file3;
echo $file4;
echo $file5;
?>

我试过这个,但出现错误

Parse error: syntax error, unexpected 'png' (T_STRING) in C:'Users'logon'Documents'NetBeansProjects'upload file rename single and multiple'multiple file rename'method 2'process.php(43) : eval()'d code on line 1

做错了什么?有人可以帮助我吗

我认为第 42 行的" = $row[0];"可能不会做你想要它做的事情。由于双引号,变量$row[0]的值将打印在代码中。

贯穿评估的代码将如下所示:

$file0 = FILENAME.png;

取而代之的是:

$file0 = $row[0];

要解决此问题,您只需将第 42 行转换为以下内容:

$codestr = '$file' . ($key+1) . ' = $row[0];';

有关单引号和双引号之间区别的更多信息:http://php.net/manual/en/language.types.string.php

编辑:对于文件的正确名称,您可以将$_FILES['files']['name'][$key]更改为$file_name . $sExt。希望对您有所帮助!