从数据库中获取文件名并从服务器中删除它

时间:2014-06-24 16:26:13

标签: php mysql database file-io mysqli

我想使用PHP和MySQL从服务器内的文件夹中删除图像。图像名称在数据库内(格式[jpg]已包含在图像名称中)。我尝试了很多方法,以下是其中之一,但它还没有工作。请帮助。

if(isset($_POST['submit2'])) {
    $numeroimagem = $_POST["numero"];

    $imagem=mysqli_query($con,"SELECT imagem FROM galeria WHERE numero='$numeroimagem'");
    $nomeimagem=mysqli_fetch_row ($imagem);

    $target = '../imgs/galeria/'.$nomeimagem;

    if (file_exists($target)) {
        unlink($target);
    }
}

表格:

<form action="" method="post">
   <input name="numero" type="text" size="3" maxlength="3"><input type="submit" name="submit2" value="Delete"><br>
</form>

3 个答案:

答案 0 :(得分:0)

您忘了删除该文件。你可以使用unlink函数:

http://php.net/manual/en/function.unlink.php

答案 1 :(得分:0)

我们无法准确知道错误,但主要问题是文件没有使用realpath函数。

如果路径正确

,则实路径功能会解析

如果您尝试使用realpath(&#39; ../ imgs / galeria /&#39;),php将解析完整路径。

如果realpath返回false或null,则当您必须尝试使用​​正确的路径时,无法解析路径。

如果您从文件夹脚本/ delete-imagem.php运行脚本,以及public / imgs / galeria中的文件,则应使用realpath(&#39; ../ public / images /)来获取完整路径。

一旦获得完整路径,您应该尝试使用&#34; unlink()&#34;

删除它
$path = realpath('../public/imgs/galeria/');
if(is_dir($path)) {
    if(is_file($path.'/'.$fileName)) { //Note that realpath trim the final "/" from filepath.
         unlink($path.'/'.$fileName);
    {
}

此代码将强制它起作用。

答案 2 :(得分:0)

我刚刚发现了问题。我通过添加[0]来解决文件名上的Array:

$target = '../imgs/galeria/'.$nomeimagem[0];

感谢您的提示:)