我正在尝试为自己的网站创建一个相当基本的CMS。我尝试创建图像表单,我可以在其中更新字段以及取消链接旧图像文件并附加新的(如果存在)。当我上传新图像然后返回内容管理页面并更新表单的标题或内容时,我的图像会自动取消链接并从本地服务器上的图像文件夹中删除。任何线索可能是为什么?
以下是一些代码......
if (isset($_POST["updateArea"])) {
$areaID = $_GET["areaID"];
$area = Web_areas::find_by_id($areaID);
$area->title = $_POST['area_title'];
$area->content = $_POST['area_content'];
if (isset($_FILES['area_upload'])) {
$old_target_path = SITE_ROOT.DS.'public'.DS.$area->image_path();
unlink($old_target_path)
$area->attach_file($_FILES['area_upload']);
$area->update_image();
redirect_to("../public/admin/manage_content.php");
} else {
$area->update();
redirect_to("../public/admin/manage_content.php");
}
}
areaID
是PHP通过URL传递,然后我使用静态find_by_id
从数据库中获取信息并将其实例化为对象属性,然后我可以重新分配新值并进行更新。 Update_image()
也会调用update()
函数,但它也会使用move_uploaded_file()
将图像分配给目录。
如果您需要我提供更多信息以帮助解决此问题,请与我们联系。谢谢!
答案 0 :(得分:0)
发现问题!!当我应该使用is_uploaded_file()时,我在$ _FILE中使用if(isset());所以代码现在看起来像这样,效果很好!
if (isset($_POST["updateArea"])) {
$areaID = $_GET["areaID"];
$area = Web_areas::find_by_id($areaID);
$area->title = $_POST['area_title'];
$area->content = $_POST['area_content'];
if (is_uploaded_file($_FILES['area_upload'])) {
$old_target_path = SITE_ROOT.DS.'public'.DS.$area->image_path();
unlink($old_target_path);
$area->attach_file($_FILES['area_upload']);
$area->update_image();
$_SESSION['area_message'] = "Area content and image updated successfully";
redirect_to("../public/admin/manage_content.php");
} else {
$area->update();
$_SESSION['area_message'] = "Area content updated successfully";
redirect_to("../public/admin/manage_content.php");
}
}