图片无法上传到文件夹(没有错误或警告)

时间:2015-02-28 18:54:19

标签: php image-processing

我有一个PHP图片上传代码,它在运行代码后没有显示任何错误或警告,但它没有将图像上传到文件夹或什么都不做

PHP

    <?php

if (isset($_FILES['files'])) {
    $uploadedFiles = array();
    foreach ($_FILES['files']['tmp_name'] as $key => $tmp_name) {
        $errors = array();
        $rand_name = microtime().microtime().time().microtime();
        echo $rand_name;
        $file_name = microtime().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($file_name . $sExt, 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);
        }
    }
}

HTML

<form action="for.php" method="post" enctype="multipart/form-data">
    Attachment(s): <input type="file" name="files[]" multiple id="files" class="hidde fileInpu"/>
    <input type="submit" name="submit" value="Request">

我在NetBeans中使用WampServer运行此代码,但没有遇到任何错误。

1 个答案:

答案 0 :(得分:0)

这一行为我提出了问题:

$file_name = md5(uniqid("") . time());

这是一个功能还是拼写错误?

您没有使用$_FILES['files']['error']检查文件上传错误,请尝试从该错误数组中获取一些反馈。

同样$file_size > 2097152000太大了,因为2Mb文件实际上是2097152,请参阅Don't allow > 2mb images

如果您使用XHTML,multiple需要multiple = "multiple",那么您看起来像XHTML,因为您的HTML元素结尾为/>

您需要检查PHP错误日志并查看其中的内容。如果您不确定错误日志的位置/位置,请参阅Where does PHP store the error log? (php5, apache, fastcgi, cpanel)以获取更多信息。

我非常确定其中一点可以解决您的问题。