PHP 文件上传时未定义索引
PHP Undefined index on file upload
我正在尝试上传文件,但总是出现错误:
Notice: Undefined index: file_pdf in C:\xampp\htdocs\FYP2\site_admin\pentadbiran\upload.php on line 10
我的代码示例从表单获取数据并上传到我的数据库以获取给定的信息,例如 file_reference、file_name、file_location 和 file_pdf .
但问题是,代码 运行 很好,但不会更新 table 中的 file_pdf 列。但是文件上传到目标文件夹正在工作。
if (isset($_POST['submit'])) {
$file_reference = $_POST['file_reference'];
$file_name = $_POST['file_name'];
$file_location = $_POST['file_location'];
$file_pdf = $_POST['file_pdf'];
if ($_FILES['file_pdf']['error'] == UPLOAD_ERR_OK)
{
$ext = strtolower(pathinfo($_FILES['file_pdf']['name'],PATHINFO_EXTENSION));
switch ($ext)
{
case'pdf':
break;
default:
throw new InvalidFileTypeException($ext);
}
$targetfolder = "pdf/";
$targetfolder = $targetfolder . basename($_FILES['file_pdf']['name']);
if (move_uploaded_file($_FILES['file_pdf']['tmp_name'], $targetfolder)) {
echo "The file " . basename($_FILES['file_pdf']['name']) . " is uploaded";
} else {
echo "Problem uploading file";
}
$sql = "INSERT INTO file (file_reference,file_name,file_location,file_pdf)
VALUES ('$file_reference','$file_name','$file_location','$file_pdf')";
if ($conn->query($sql) === TRUE) {
echo "New record created successfully";
} else {
echo "Error: " . $sql . "<br>" . $conn->error;
}
}
代码是 运行 但在我的数据库中 file_pdf 不是 update.Why 是这样吗?
全局$_FILES
会包含所有上传的文件信息。示例表格的内容如下。请注意,这假定使用文件上传名称 userfile,如上面的示例脚本中所用。这可以是任何名称。
$_FILES['userfile']['name']
客户端机器上文件的原始名称。
$_FILES['userfile']['type']
文件的 mime 类型,如果浏览器提供了此信息。一个例子是 "image/gif"。然而,PHP 端未检查此 mime 类型,因此不要将其值视为理所当然。
$_FILES['userfile']['size']
上传文件的大小,以字节为单位。
$_FILES['userfile']['tmp_name']
服务器上存储上传文件的临时文件名。
$_FILES['userfile']['error']
与此文件上传相关的错误代码。
改变这个...
$file_pdf = $_POST['file_pdf'];
到
$file_pdf = $_FILES['file_pdf']['name'];
我正在尝试上传文件,但总是出现错误:
Notice: Undefined index: file_pdf in C:\xampp\htdocs\FYP2\site_admin\pentadbiran\upload.php on line 10
我的代码示例从表单获取数据并上传到我的数据库以获取给定的信息,例如 file_reference、file_name、file_location 和 file_pdf .
但问题是,代码 运行 很好,但不会更新 table 中的 file_pdf 列。但是文件上传到目标文件夹正在工作。
if (isset($_POST['submit'])) {
$file_reference = $_POST['file_reference'];
$file_name = $_POST['file_name'];
$file_location = $_POST['file_location'];
$file_pdf = $_POST['file_pdf'];
if ($_FILES['file_pdf']['error'] == UPLOAD_ERR_OK)
{
$ext = strtolower(pathinfo($_FILES['file_pdf']['name'],PATHINFO_EXTENSION));
switch ($ext)
{
case'pdf':
break;
default:
throw new InvalidFileTypeException($ext);
}
$targetfolder = "pdf/";
$targetfolder = $targetfolder . basename($_FILES['file_pdf']['name']);
if (move_uploaded_file($_FILES['file_pdf']['tmp_name'], $targetfolder)) {
echo "The file " . basename($_FILES['file_pdf']['name']) . " is uploaded";
} else {
echo "Problem uploading file";
}
$sql = "INSERT INTO file (file_reference,file_name,file_location,file_pdf)
VALUES ('$file_reference','$file_name','$file_location','$file_pdf')";
if ($conn->query($sql) === TRUE) {
echo "New record created successfully";
} else {
echo "Error: " . $sql . "<br>" . $conn->error;
}
}
代码是 运行 但在我的数据库中 file_pdf 不是 update.Why 是这样吗?
全局$_FILES
会包含所有上传的文件信息。示例表格的内容如下。请注意,这假定使用文件上传名称 userfile,如上面的示例脚本中所用。这可以是任何名称。
$_FILES['userfile']['name']
客户端机器上文件的原始名称。
$_FILES['userfile']['type']
文件的 mime 类型,如果浏览器提供了此信息。一个例子是 "image/gif"。然而,PHP 端未检查此 mime 类型,因此不要将其值视为理所当然。
$_FILES['userfile']['size']
上传文件的大小,以字节为单位。
$_FILES['userfile']['tmp_name']
服务器上存储上传文件的临时文件名。
$_FILES['userfile']['error']
与此文件上传相关的错误代码。
改变这个...
$file_pdf = $_POST['file_pdf'];
到
$file_pdf = $_FILES['file_pdf']['name'];