PHP上传文件时$_FILES报错Undefined array key 'image'如何解决
问题解决方法
错误原因
两个警告触发的核心是$_FILES数组中不存在image键,常见场景有两个:
- 未通过表单提交,直接访问
input-photo.php文件,此时没有上传的文件数据 - 提交表单时未选中任何文件,表单不会上传文件数据,PHP不会生成对应的
$_FILES条目
修复步骤
1. 优化HTML表单
给文件选择框添加required属性,强制用户必须选择文件才能提交,修改后的文件输入框代码如下:
<input type="file" name="image" id="1" required>
2. 完善PHP校验逻辑
在读取文件属性前,先判断文件是否上传成功,修改后的input-photo.php代码如下:
<?php $server = "localhost"; $username = "root"; $password = ""; $conn = mysqli_connect($server, $username, $password, "form"); if (isset($_POST['upload'])) { // 先判断是否存在上传的文件条目,且上传无错误 if (isset($_FILES['image']) && $_FILES['image']['error'] === UPLOAD_ERR_OK) { $name = $_FILES['image']['name']; echo $name; // 后续可以写插入数据库的逻辑,建议用预处理语句防止SQL注入 } else { echo "请选择有效的文件上传"; } } ?>
额外注意事项
如果后续要把文件名写入数据库,不要直接拼接SQL语句,建议使用mysqli预处理语句,避免SQL注入风险。
内容的提问来源于stack exchange,提问作者Vatsalya Baluni
相关产品推荐
相关产品推荐

