即使没有上传图片,也会执行'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;
}
//}
答案 0 :(得分:0)
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;
}
请试试这个。希望这会有所帮助:)
答案 1 :(得分:0)
根据 php documentation 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:
upload_max_filesize
post_max_size
检查并纠正所有这些点,它应该正常工作。
答案 2 :(得分:0)
执行unlink()
的真正原因是您已禁用if条件
if (file_exists($delete))
使用//
。
这是代码,你可能想写:
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
”。
如果您需要更多帮助,请向我们提供更多关于此片段的代码。