1

我想问一下如何覆盖/更新选择的文件。我有一个表,其中有一个名为 File1 的文件。我想编辑该选定的行并将 File1 更改为 File2 而不在文件夹的目录中添加 FILE2,我想从目录文件夹中删除 File1 并被 File2 替换。

这是我的 MySQL 和 moveuploadfile 代码。

<?php
if(isset($_POST['submit'])) {
    include 'connection.php';

    $storedFile="../files/RepositoryFiles/".basename($_FILES["file"]["name"]);
    $research_photo="../files/Images/".basename($_FILES["research_photo"]["name"]);

    if(file_exists($storedFile) or file_exists($research_photo)){
        echo "<script type='text/javascript'>alert('Research File is already Existing!'); location.href='../admin/AddResearch.php?adding=failed';</script>";
    }
    else if($_FILES["file"]["size"] && $_FILES["research_photo"]["size"] > 10000000){
        echo "<script type='text/javascript'>alert('Research File should be less than 10MB!'); location.href='../admin/AddResearch.php?adding=failed';</script>";
    }
    else {
    $researchId = $_POST['idResearch'];
    $research_title = mysqli_real_escape_string($conn,$_POST['research_title']);
    $research_type = mysqli_real_escape_string($conn,$_POST['research_type']);
    $research_timeline = mysqli_real_escape_string($conn,$_POST['research_timeline']);
    // $storedFile="../files/RepositoryFiles/".basename($_FILES["file"]["name"]);
            move_uploaded_file($_FILES["file"]["tmp_name"], $storedFile);
    $research_description = mysqli_real_escape_string($conn,$_POST['research_description']);
    $research_author = mysqli_real_escape_string($conn,$_POST['research_author']);
    // $research_photo="../files/Images/".basename($_FILES["research_photo"]["name"]);
            move_uploaded_file($_FILES["research_photo"]["tmp_name"], $research_photo);
            $sql = "UPDATE tbl_repository SET research_title = ?, research_type = ?, research_timeline  = ?,
            research_file = ?, research_description = ?, research_author = ?, research_photo = ? WHERE ID = ? ";    
    $stmt = mysqli_stmt_init($conn);
    if(!mysqli_stmt_prepare($stmt,$sql)){
        echo "SQL Error" . mysqli_error($stmt);
    }
    else {
        mysqli_stmt_bind_param($stmt,"sssssssi", $research_title, $research_type, $research_timeline, $storedFile, $research_description, $research_author,$research_photo,$researchId); 
        mysqli_stmt_execute($stmt);
        echo "<script type='text/javascript'>alert('Successfuly Updated!'); location.href='../admin/ViewResearch.php?updating=success';</script>";
    }
}
}

?>

我尝试了取消链接,但它对我不起作用,我尝试将研究文件和研究照片的值存储在两个变量中,其中第一个存储当前文件/照片并将其删除,第二个是新文件用户在两个数据库中选择并上传并在文件目录中移动。

如果我说得通,我想知道,但我尽我所能解释我目前正在苦苦挣扎的事情。谢谢!

编辑:这是供参考的图像:如您所见,它存储在 file/images 和 file/RepositoryFiles 这就是我要获取的内容。 在此处输入图像描述

所以在这里,我选择了新文件和照片。 在此处输入图像描述

所以这是我更新所选行后的结果。 在此处输入图像描述

我想在用新的图像/文件更新后删除以前的文件/照片。

4

1 回答 1

0

unlink()您可以通过方法简单地删除文件。

只是,给它正确的路径很重要。

例如unlink("/var/www/test/file.png");

当我检查您的代码时,没有使用unlink()方法,或者您可能还有其他问题。

于 2020-12-22T04:45:12.623 回答