我正在尝试运行以下代码,但会收到很多错误,例如下面的代码;
注意:第14,21,22.23行
C:\xampp\htdocs\SimpleCMS\_class\simpleCMS.php
中的未定义索引:文件。
我的代码是
<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"];
}
?>
答案 0 :(得分: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"];
}
}
?>
答案 1 :(得分:0)
您忘记检查表单是否已提交。
在您的情况下,将您的PHP代码包装成如下所示:
if (isset($_POST['submit']))
{
// your code
}
答案 2 :(得分:0)
在通过索引从数组中获取元素之前使用isset
函数。
答案 3 :(得分: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"];
}
}
答案 4 :(得分: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"];
}
“@”将导致您不会收到任何警告。