【问题标题】:php uploading file, says undefined index, not sure whyphp上传文件,说未定义索引,不知道为什么
【发布时间】:2020-02-18 05:24:39
【问题描述】:

我正在尝试上传图片。我已经包含了来自不同页面 (inc/pages/addRecipe2.php) 的表单,并且表单加载正常,我在同一页面中运行表单的代码 (addRecipe/?token=...),当我尝试上传文件说有一个未定义的索引:图片

我得到的错误:

表格代码:

<form enctype="multipart/file-data" method="POST">
        <div class="form-group">
            <input type="file" class="form-control-file" id="image" name="image">
        </div>
        <?php
        if ($privateRecipe == "public") {
            echo "<button type='submit' class='btn btn-primary' style='width: 100%' id='finishRecipe' name='finishRecipe'>Submit recipe for review</button>";
        } else {
            echo "<button type='submit' class='btn btn-primary' style='width: 100%' id='finishRecipe' name='finishRecipe'>Complete reci</button>";
        }
        ?>
        <p class="formMessage1"></p>
    </form>

php代码,运行表单:

if (isset($_POST['finishRecipe'])) {
$recipeId = $_GET['token'];
$image = $_FILES['image'];

$imageName = $_FILES['image']['name'];
$imageTmpName = $_FILES['image']['tmp_name'];
$imageSize = $_FILES['image']['size'];
$imageError = $_FILES['image']['error'];
$imageType = $_FILES['image']['type'];
$fileExt = explode(".", $imageName);
$fileActualExt = strtolower(end($fileExt));
$allowedExt = array('png', 'jpg', 'jpeg');


if (in_array($fileActualExt, $allowedExt)) {
    if ($imageError === 0) {
        if ($imageSize < 500000) {
            $fileNameNew = uniqid('', true) . "." . $fileActualExt;
            $fileDestination = "uploads/$fileNameNew";
            move_uploaded_file($imageTmpName, $fileDestination);
        } else {
            echo "The image is too big!";
        }
    } else {
        echo "There was an error with your image!";
    }
} else {
    echo "File type not allowed!";
}

}

它确实将“文件类型不允许”作为我制作的错误消息之一回显。

有什么解决办法吗?

【问题讨论】:

  • 你上传的文件扩展名不是'png'、'jpg'或'jpeg'? $allowedExt = array('png', 'jpg', 'jpeg');
  • strtolower( end( $fileExt ) )的值是多少
  • 我已经用我得到的错误更新了帖子 - 在图像中
  • 更改表单 enctype="multipart/form-data">

标签: php html forms


【解决方案1】:

产生的问题可能是您的文件大小大于默认的 max_upload 大小。

所以请在你的 php.ini 中更改它:

`upload_max_filesize` = 128M

或解决此错误的其他选项是检查是否设置了图像名称。

    if (isset($_FILES["image"]["name"])) {

        $name = $_FILES["file"]["name"];
        $tmp_name = $_FILES['file']['tmp_name'];
        $error = $_FILES['file']['error'];

        if (!empty($name)) {
           $location = 'uploads/';
           if  (move_uploaded_file($tmp_name, $location.$name)){
               echo 'Uploaded';
            }

        } else {
          echo 'please choose a file';
        }
    }

【讨论】:

  • 我的意思是,它说“图像”是未定义的,这就是我得到的错误。我该如何解决?
  • @ethan patwell 您是否尝试过第一种解决方案?
  • 是的,同样的错误,错误是未定义索引:图像
  • 表格在不同的页面,我已经包含在主文件中
  • 你能把表单属性enctype="multipart/file-data"改成enctype="multipart/form-data"吗?
【解决方案2】:

先把enctype改成form-data

<form enctype="multipart/form-data" method="POST">

然后检查

if (isset($_FILES["image"]["name"])) {
        if (in_array($fileActualExt, $allowedExt)) {
            if ($imageError === 0) {
                if ($imageSize < 500000) {
                    $fileNameNew = uniqid('', true) . "." . $fileActualExt;
                    $fileDestination = "uploads/$fileNameNew";
                    move_uploaded_file($imageTmpName, $fileDestination);
                } else {
                    echo "The image is too big!";
                }
            } else {
                echo "There was an error with your image!";
            }
    } else {
        echo "File type not allowed!";
    }

}

【讨论】:

    猜你喜欢
    • 2016-01-28
    • 2014-07-27
    • 2014-05-24
    • 1970-01-01
    • 1970-01-01
    • 2014-02-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多