即使没有上传图像,也会执行'unlink()'方法,为什么会这样?我该如何修复它?
If (isset($_FILES["image"]["name"])) {
move_uploaded_file($_FILES["imageUp"]["tmp_name"],
"C:/xampp/htdocs/" . $_FILES["image"]["name"]);
//if (file_exists($delete)) {
unlink($delete);
}
else {
$img = $data['row']->image_name;
}
//}
isset($_FILES["image"]["name"]
将始终设置,即使您是否上载文件。isset
检查事物是否被设置。所以它将永远是true
。
所以你需要更改你的代码:
if (isset($_FILES["image"]["name"]) && !empty($_FILES["image"]["name"])) {
move_uploaded_file($_FILES["imageUp"]["tmp_name"],
"C:/xampp/htdocs/" . $_FILES["image"]["name"]);
//if (file_exists($delete)) {
unlink($delete);
} else {
$img = $data['row']->image_name;
}
请试试这个。希望这有帮助:)
根据php文档,如果一切正常,move_uploaded_file将返回TRUE
,如果出现问题,则返回FALSE
。
正如您所说,图像没有移动,因为move_uploaded_file正在返回FALSE
您可以证明将您的代码更改为:
var_dump(move_uploaded_file($_FILES["imageUp"]["tmp_name"],
"C:/xampp/htdocs/" . $_FILES["image"]["name"]));
看看会有什么回报。
当:时,move_uploaded_file
将返回FALSE
- 目的地不存在
- 服务器没有足够的权限将文件移动到目标
- 文件未上载,因为它大于php.ini变量
upload_max_filesize
- 文件未上载,因为它大于php.ini变量
post_max_size
检查并纠正所有这些点,它应该是有效的。
unlink()
的真正原因是您禁用了if条件
使用CCD_ 11对CCD_。
这是代码,你可能想写:
if (isset($_FILES["image"]["name"]) && is_uploaded_file($_FILES['image']['tmp_name'])) {
move_uploaded_file($_FILES["image"]["tmp_name"],
"C:/xampp/htdocs/" . $_FILES["image"]["name"]);
if (file_exists($delete)) {
unlink($delete);
} else {
$img = $data['row']->image_name;
}
}
并确保$delete
已保存!想象一下,如果$delete
等于"C:'users'your-name'some-private-file
"。如果您需要更多帮助,请给我们更多关于这个片段的代码。