php删除目录中的单个文件

时间:2011-03-17 11:03:21

标签: php

我从这个链接http://www.gaijin.at/en/scrphpfilelist.php获得了php list目录脚本。 如何从directoy中删除单个文件?我尝试了unlink,但它删除了该目录中的所有文件。这是我从链接获得的短代码!

while ($file = readdir ($hDir)) {
if ( ($file != '.') && ($file != '..') && (substr($file, 0, 1) != '.') &&
     (strtolower($file) != strtolower(substr($DescFile, -(strlen($file))))) &&
     (!IsFileExcluded($Directory.'/'.$file))
   ) {

  array_push($FilesArray, array('FileName' => $file,
                                'IsDir' => is_dir($Directory.'/'.$file),
                                'FileSize' => filesize($Directory.'/'.$file),
                                'FileTime' => filemtime($Directory.'/'.$file)
                                ));
}
}
$BaseDir = '../_cron/backup';
$Directory = $BaseDir;

foreach($FilesArray as $file) {
  $FileLink = $Directory.'/'.$file['FileName'];
  if ($OpenFileInNewTab) $LinkTarget = ' target="_blank"'; else $LinkTarget = '';
    echo '<a href="'.$FileLink.'">'.$FileName.'</a>';
    echo '<a href="'.unlink($FileLink).'"><img src="images/icons/delete.gif"></a></td>';
  }
}

列表目录文件夹调用:backup。
unlink($FileLink)中,当我将链接更改为另一个文件夹到管理文件夹时?

8 个答案:

答案 0 :(得分:28)

unlink('path_to_filename');将一次删除一个文件。

如果您目录中的所有文件都已消失,则意味着您列出了所有文件并逐个删除。

嗯,你不能在同一页面中删除。你必须与其他页面。创建一个名为deletepage.php的页面,其中包含要删除的脚本并以'file'作为参数链接到该页面。

foreach($FilesArray as $file)
{
    $FileLink = $Directory.'/'.$file['FileName'];

    if($OpenFileInNewTab) $LinkTarget = ' target="_blank"'; 
    else $LinkTarget = '';

    echo '<a href="'.$FileLink.'">'.$FileName.'</a>';
    echo '<a href="deletepage.php?file='.$fileName.'"><img src="images/icons/delete.gif"></a></td>';        
}

在deletepage.php上

//and also consider to check if the file exists as with the other guy suggested.
$filename = $_GET['file']; //get the filename
unlink('DIRNAME'.DIRECTORY_SEPARATOR.$filename); //delete it
header('location: backto prev'); //redirect back to the other page

如果你不想导航,那么使用ajax来优雅。

答案 1 :(得分:10)

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

取消链接可以安全地删除单个文件;只需确保您要删除的文件实际上是文件而不是目录('。'或'..')

if (is_file($filepath))
  {
    unlink($filepath);
  }

答案 2 :(得分:4)

只需你可以使用它

    $sql="select * from tbl_publication where id='5'";
    $result=mysql_query($sql);
    $res=mysql_fetch_array($result);
    //Getting File Name From DB
    $pdfname = $res1['pdfname'];
    //pdf is directory where file exist
    unlink("pdf/".$pdfname);

答案 3 :(得分:3)

unlink是适合您用例的php函数。

unlink('/path/to/file');

如果没有更多信息,我不能告诉你使用它时出了什么问题。

答案 4 :(得分:3)

您下载的脚本列出了指定文件夹的内容。您可能将unlink - 调用放在列出文件的while - 循环之一中。

编辑 - 现在您发布了代码:

echo '<a href="'.unlink($FileLink).'"><img src="images/icons/delete.gif"></a></td>';

执行此操作会在每次写入行时调用unlink - 函数,删除文件。 您必须编写包含删除功能的脚本的链接,并传递一些参数,告诉您的脚本要删除的内容。

示例:

<a href="/path/to/script.php?delete='. $FileLink .'">delete</a>

不应该将路径传递给这个脚本的文件,只是删除它,因为恶意可能会用它来删除所有内容或做其他邪恶的事情。

答案 5 :(得分:1)

如果您想删除单个文件,则必须如您所知,使用unlink()功能。

该函数将删除您将其作为参数传递的内容:因此,您可以将路径传递给它必须删除的文件


例如,您将使用以下内容:

unlink('/path/to/dir/filename');

答案 6 :(得分:0)

<?php 
    if(isset($_GET['delete'])){
        $delurl=$_GET['delete'];
        unlink($delurl);
    }
?>
<?php
if ($handle = opendir('.')) {
    while (false !== ($entry = readdir($handle))) {
        if ($entry != "." && $entry != "..") {
            echo "<a href=\"$entry\">$entry</a> | <a href=\"?delete=$entry\">Delete</a><br>";
        }
    }
    closedir($handle);
}
?>

这是它

答案 7 :(得分:0)

=