未定义索引声明
Undefined index Notice
多年来我一直试图解决这个问题,但是当我尝试上传文件时,我收到了“undefined index
”通知。任何帮助都会很棒!如果有帮助的话,我在第 38 行收到错误,而且我认为这也可能与我的表单有关。
HTML形式:
<form action="UploadFileCodeImage.php" method="post"enctype="multipart/form-data">
Upload image (JPG, JPEG, PNG, or GIF):<br/>
<input type="file" name="file" id="file"><br/>
<input type="submit" value="submit" name="file">
</form>
PHP:
<?php
$destination = "C:\xampp\htdocs\Uploaded files\CS\Image";
$target_file = $destination . basename($_FILES["file"]["name"]);
$uploadOk = 1;
$filetype = pathinfo($target_file,PATHINFO_EXTENSION);
// Check if image file is a actual image or fake image
if(isset($_POST["submit"])) {
$check = filesize($_FILES["file"]["Temp"]);
if($check !== false) {
echo "Voila! - " . $check["file"];
$uploadOk = 1;
} else {
echo "Error!";
$uploadOk = 0;
}
}
// Check if file already exists
if (file_exists($target_file)) {
echo "Sorry, file already exists.";
$uploadOk = 0;
}
// Check file size
if ($_FILES["file"]["size"] > 50000000) {
echo "Sorry, your file is too large.";
$uploadOk = 0;
}
// Allow certain file formats
if($filetype != "jpg" && $filetype != "png" && $filetype != "jpeg"
&& $filetype != "gif") {
echo "Sorry, only JPG, JPEG, PNG, and GIF files are allowed.";
$uploadOk = 0;
}
// Check if $uploadOk is set to 0 by an error
if ($uploadOk == 0) {
echo "Sorry, your file was not uploaded.";
// if everything is ok, try to upload file
} else {
if (move_uploaded_file($_FILES["file"]["Temp"], $target_file)) {
echo "The file ". basename( $_FILES["file"]["name"]). " has been uploaded.";
} else {
echo "Error!";
}
}
?>
"Temp" 不是有效密钥。相反,使用 tmp_name
if (move_uploaded_file($_FILES["file"]["Temp"], $target_file)) {
应该是
if (isset($_FILES["file"]["tmp_name"]) && move_uploaded_file($_FILES["file"]["tmp_name"], $target_file)) {
让我概述一下您代码中的错误。
您有两个同名的表单元素,"file";那是一个冲突。
<input type="file" name="file" id="file">
^^^^^^^^^^^
和
<input type="submit" value="submit" name="file">
^^^^^^^^^^^
那么你的条件语句 if(isset($_POST["submit"]))
是基于一个名为 "submit" 的提交按钮;它不存在,因此不会执行其中的任何内容。
因此,将您的提交按钮重命名为 "submit"。
然后你有 ["Temp"]
,这是无效的,根据手册,所有这些都应该读作 ["tmp_name"]
:
存在于
$check = filesize($_FILES["file"]["Temp"]);
和
if (move_uploaded_file($_FILES["file"]["Temp"], $target_file)) {
然后是这一行:
$destination = "C:\xampp\htdocs\Uploaded files\CS\Image";
应该有两个尾部斜杠(编辑)
$destination = "C:\xampp\htdocs\Uploaded files\CS\Image\";
因为 $destination . basename($_FILES["file"]["name"]
会在应该是 folder/Image.jpg
的地方翻译成 folderImage.jpg
,否则会导致错误。
- 还要确保目标文件夹具有适当的写入权限。
多年来我一直试图解决这个问题,但是当我尝试上传文件时,我收到了“undefined index
”通知。任何帮助都会很棒!如果有帮助的话,我在第 38 行收到错误,而且我认为这也可能与我的表单有关。
HTML形式:
<form action="UploadFileCodeImage.php" method="post"enctype="multipart/form-data">
Upload image (JPG, JPEG, PNG, or GIF):<br/>
<input type="file" name="file" id="file"><br/>
<input type="submit" value="submit" name="file">
</form>
PHP:
<?php
$destination = "C:\xampp\htdocs\Uploaded files\CS\Image";
$target_file = $destination . basename($_FILES["file"]["name"]);
$uploadOk = 1;
$filetype = pathinfo($target_file,PATHINFO_EXTENSION);
// Check if image file is a actual image or fake image
if(isset($_POST["submit"])) {
$check = filesize($_FILES["file"]["Temp"]);
if($check !== false) {
echo "Voila! - " . $check["file"];
$uploadOk = 1;
} else {
echo "Error!";
$uploadOk = 0;
}
}
// Check if file already exists
if (file_exists($target_file)) {
echo "Sorry, file already exists.";
$uploadOk = 0;
}
// Check file size
if ($_FILES["file"]["size"] > 50000000) {
echo "Sorry, your file is too large.";
$uploadOk = 0;
}
// Allow certain file formats
if($filetype != "jpg" && $filetype != "png" && $filetype != "jpeg"
&& $filetype != "gif") {
echo "Sorry, only JPG, JPEG, PNG, and GIF files are allowed.";
$uploadOk = 0;
}
// Check if $uploadOk is set to 0 by an error
if ($uploadOk == 0) {
echo "Sorry, your file was not uploaded.";
// if everything is ok, try to upload file
} else {
if (move_uploaded_file($_FILES["file"]["Temp"], $target_file)) {
echo "The file ". basename( $_FILES["file"]["name"]). " has been uploaded.";
} else {
echo "Error!";
}
}
?>
"Temp" 不是有效密钥。相反,使用 tmp_name
if (move_uploaded_file($_FILES["file"]["Temp"], $target_file)) {
应该是
if (isset($_FILES["file"]["tmp_name"]) && move_uploaded_file($_FILES["file"]["tmp_name"], $target_file)) {
让我概述一下您代码中的错误。
您有两个同名的表单元素,"file";那是一个冲突。
<input type="file" name="file" id="file">
^^^^^^^^^^^
和
<input type="submit" value="submit" name="file">
^^^^^^^^^^^
那么你的条件语句 if(isset($_POST["submit"]))
是基于一个名为 "submit" 的提交按钮;它不存在,因此不会执行其中的任何内容。
因此,将您的提交按钮重命名为 "submit"。
然后你有 ["Temp"]
,这是无效的,根据手册,所有这些都应该读作 ["tmp_name"]
:
存在于
$check = filesize($_FILES["file"]["Temp"]);
和
if (move_uploaded_file($_FILES["file"]["Temp"], $target_file)) {
然后是这一行:
$destination = "C:\xampp\htdocs\Uploaded files\CS\Image";
应该有两个尾部斜杠(编辑)
$destination = "C:\xampp\htdocs\Uploaded files\CS\Image\";
因为 $destination . basename($_FILES["file"]["name"]
会在应该是 folder/Image.jpg
的地方翻译成 folderImage.jpg
,否则会导致错误。
- 还要确保目标文件夹具有适当的写入权限。