【问题标题】:Delete specific uploaded file from folder on server and display remaining files从服务器上的文件夹中删除特定上传的文件并显示剩余文件
【发布时间】:2014-04-05 02:43:27
【问题描述】:

试图让它工作有点疯狂......我有一个照片上传页面,可让您上传多张照片并在上传表单下方显示特定用户的所有上传照片。我还在每张照片旁边放置了一个删除按钮,但是一旦您删除了一张照片,它就会继续显示该图像(尽管从服务器中删除照片时链接断开)。我首先遍历一个包含文件目录和名称的表,然后显示这些照片。我有一个调用 unlink() 函数的提交按钮。

$photoQuery= "SELECT * FROM photo_index WHERE User_ID='$UserID'";
            $result = mysqli_query($dbcon, $photoQuery);

            while ($photo_data = mysqli_fetch_array($result)){


                echo "<form id=photo_Form action=listing_photos.php method=post> ";
                echo "<input type=hidden name=photoDir value='$photo_data[Photo_Dir]' />";
                echo "<input type=submit name=photoDel id=submit_but value=Delete />";
                echo "</form>";
                echo "<img src='$photo_data[Photo_Dir]' height=100px width=100px>";


    }

然后这里是删除照片文件和表中存储照片信息的行的php。

if (isset($_POST['photoDel'])){
                $fh = fopen($_POST['photoDir'], 'a');
                fclose($fh);
                unlink($_POST['photoDir']);

                $photoDel= "DELETE FROM photo_index WHERE Photo_Dir='$_POST[photoDir]'";
                $result = mysqli_query($dbcon, $photoDel) or die(mysql_error());

                echo "Photo Removed";

}

在使用 unlink 之前,我必须打开和关闭文件,因为如果我不这样做,我总是会在照片被删除后收到警告说 unlink(images/somephoto.jpg) 不存在(因为它已从服务器已经)

单击删除按钮后,它应该刷新页面,不是吗?当页面刷新时,它应该重新加载查询并只显示照片表中列出的照片?无论出于何种原因,需要两次刷新才能获得该结果。任何帮助将不胜感激,或者任何可以做得更好的方法!干杯。

【问题讨论】:

    标签: javascript php forms upload


    【解决方案1】:

    首先,您的代码容易受到 SQL 注入的攻击。你应该调查一下。接下来,也许您应该使用 JS 从文档中查找并删除图像。所以,有一个 &lt;button&gt; 运行一个函数,从文档中删除具有特定来源的图像。

    这是一个 PHP sn-p:

    $photoQuery= "SELECT * FROM photo_index WHERE User_ID='$UserID'";
                $result = mysqli_query($dbcon, $photoQuery);
    
                while ($photo_data = mysqli_fetch_array($result)){
    
    
                    echo "<form id=photo_Form action=listing_photos.php method=post> ";
                    echo "<input type=hidden name=photoDir value=". $photo_data[Photo_Dir] . "/>";
                    echo "<input type=submit name=photoDel id=submit_but value=Delete />";
                    echo "</form>";
                    echo "<img src=" .$photo_data[Photo_Dir]. "  id = 'picture' height=100px width=100px>";
                    echo "<script> 
                             var d = getElementById('submit_but'); 
                             var b = getElementById('pic');
                             d.onclick = function(){
                                  pic.parentNode.removeChild(b);
                                  return true;
                             }
                          </script>";
    
        }
    

    请参阅此处了解 JavaScript:

    http://jsfiddle.net/BUXBq/

    【讨论】:

    • 好吧,我明白你在说什么。因此,我只需要从 HTML 中删除 img 元素,我仍然需要保留从服务器中删除实际 img 文件的 php 以及存储图像信息的表中的图像记录?谢谢你的帮助!!
    • 是的,我很高兴能帮上忙!
    • 所以我不断收到错误消息“无法在 'Node' 上执行 'removeChild':要删除的节点不是该节点的子节点。” ......没关系,明白了!谢谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-02-15
    • 2016-10-09
    • 2015-02-27
    • 2013-06-27
    • 2012-03-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多