PHP上传头像到MySQL出现Undefined array key "fileupload"错误如何解决
错误原因
- 代码未判断表单提交状态:PHP代码直接写在页面顶部,用户首次GET访问页面时表单还没提交,
$_FILES数组不存在fileupload键,触发第一个警告。 - 读取文件路径错误:PHP接收上传文件后会先存到服务器临时目录,正确的临时路径是
$_FILES['fileupload']['tmp_name'],你用$_FILES['fileupload']['name'](用户本地的原始文件名)读取,服务器上没有对应路径,触发后续的空路径报错。
修复方案
把顶部的PHP代码替换为如下逻辑:
<?php // 仅在用户点击提交按钮后执行上传处理逻辑 if (isset($_POST['submit'])) { // 先判断上传是否有错误 if ($_FILES['fileupload']['error'] === UPLOAD_ERR_OK) { // 取临时文件路径读取内容 $tmpPath = $_FILES['fileupload']['tmp_name']; $fileName = $_FILES['fileupload']['name']; $picture = file_get_contents($tmpPath); // 这里写后续存入数据库的逻辑,注意要对$picture做转义或用PDO预处理避免SQL注入 } else { $pictureErr = "头像上传失败,请检查文件大小、格式是否符合要求"; } } ?>
额外优化建议
- 头像文件不推荐直接存入MySQL数据库,会大幅增加数据库体积、降低查询效率,更合理的方案是把文件存到服务器磁盘,只把文件路径存入数据库。
- 你当前表单里性别单选按钮的
name属性存在重复问题,三个单选都定义了两个name属性,要改成统一name="gender",否则无法正常提交选中的性别值。
内容的提问来源于stack exchange,提问作者Ceren Keklik
相关产品推荐
相关产品推荐

