0

我正在尝试运行以下代码,但出现很多错误,例如下面的错误;

注意:未定义的索引:文件在C:\xampp\htdocs\SimpleCMS\_class\simpleCMS.php第 14、21、22.23 行。

我的代码是

<html>
<body>

<form action="upload_file.php" method="post" enctype="multipart/form-data">
<label for="file">Filename:</label>
<input type="file" name="file" id="file"><br>
<input type="submit" name="submit" value="Submit">
</form>




<?php
if ($_FILES["file"]["error"] > 0)
{
echo "Error: " . $_FILES["file"]["error"] . "<br>";
}
else
{
echo "Upload: " . $_FILES["file"]["name"] . "<br>";
echo "Type: " . $_FILES["file"]["type"] . "<br>";
echo "Size: " . ($_FILES["file"]["size"] / 1024) . " kB<br>";
echo "Stored in: " . $_FILES["file"]["tmp_name"];
}
?>
4

5 回答 5

0

首次加载页面时,该$_FILES变量为空。因此,在以任何方式使用它之前,请检查您的属性是否已设置,例如,使用isset()如下:

<?php
if ( isset($_FILES['file']) ) {
  if ($_FILES["file"]["error"] > 0) {
    echo "Error: " . $_FILES["file"]["error"] . "<br>";
  } else {
    echo "Upload: " . $_FILES["file"]["name"] . "<br>";
    echo "Type: " . $_FILES["file"]["type"] . "<br>";
    echo "Size: " . ($_FILES["file"]["size"] / 1024) . " kB<br>";
    echo "Stored in: " . $_FILES["file"]["tmp_name"];
  }
}
?>
于 2013-04-30T13:49:46.333 回答
0

您忘记检查您的表格是否已提交。

在您的情况下,将您的 PHP 代码包装成这样的 if :

if (isset($_POST['submit']))
{
    // your code
}
于 2013-04-30T13:49:47.510 回答
0

您已经知道一开始 $_FILES 是空的,但是 PHP 想要在使用不必要的索引的情况下通知您。

在这种特定情况下,您可以这样做:

if ($_FILES["file"]["error"] > 0)
{
    echo "Error: " . @$_FILES["file"]["error"] . "<br>";
}
else
{
    echo "Upload: " . @$_FILES["file"]["name"] . "<br>";
    echo "Type: " . @$_FILES["file"]["type"] . "<br>";
    echo "Size: " . (@$_FILES["file"]["size"] / 1024) . " kB<br>";
    echo "Stored in: " . @$_FILES["file"]["tmp_name"];
}

“@”将导致您不会收到任何警告。

于 2013-04-30T13:56:03.710 回答
0

isset在按索引从数组中获取元素之前使用函数。

于 2013-04-30T13:50:14.970 回答
0

它会给你这个错误,因为 $_FILE 变量中没有文件。在像这样使用它之前,您应该检查它是否已设置:

if(isset($_FILES["file"])) {
    if ($_FILES["file"]["error"] > 0)
    {
        echo "Error: " . $_FILES["file"]["error"] . "<br>";
    }
    else
    {
        echo "Upload: " . $_FILES["file"]["name"] . "<br>";
        echo "Type: " . $_FILES["file"]["type"] . "<br>";
        echo "Size: " . ($_FILES["file"]["size"] / 1024) . " kB<br>";
        echo "Stored in: " . $_FILES["file"]["tmp_name"];
    }
}
于 2013-04-30T13:50:18.807 回答