2016-06-21 54 views
0

我需要删除一个文件。到目前为止,我最终删除了所有文件。删除PHP中的单个文件

如何删除单个文件?

<?php 
function delete($descarga){ 
    $link = $descarga; 
    unlink($link); 
} 

$path="ficheros/"; 
$directorio=dir($path); 
while ($archivo = $directorio->read()) 
{ 
    if($archivo === '.' || $archivo === '..') {continue;} 
    $descarga = $path."".$archivo; 
    echo "<a href=".$descarga.">".$archivo."</a>"."<a title='Delete' href='#' onclick=".delete($descarga)."><span class='glyphicon glyphicon-remove'></span></a>"."<br>"; 
} 

$directorio->close(); 
?> 
+0

对于您发布的代码,您的问题并不清楚。请说清楚一点。 –

+0

我想用方法UNLINK @MuntashirAkon – JMF

+0

从图标中删除文件我认为图形与您的问题无关,所以我会从问题描述中编辑它。另外,据我所知,当你试图删除一个文件,所有的文件被删除,而不是,是吗? – cavpollo

回答

2

起初并不清楚,但我看到你提供的代码有什么问题。

首先你抓取目录中的所有文件。 然后,您尝试创建不是文件夹的文件的删除链接。 但是,这是事情,每次你创建一个链接,你在代码中调用delete()。因此,每次执行此代码时,即使链接显示在页面上,也会立即删除所有文件。试着加载页面,不要点击任何东西,你会看到。

所以这里的问题是你混淆/混合服务器端代码与客户端代码。页面呈现后,您无法访问您编写的PHP代码。所以这意味着你无法访问onclick Javascript事件中的delete函数,因为PHP是服务器端代码,Javascript是客户端代码。

你需要的是2个PHP文件。其中显示的文件和删除按钮,像这样:

/display_files.php 
<?php 
    $path="ficheros/"; 
    $directorio=dir($path); 
    while ($archivo = $directorio->read()) 
    { 
     if($archivo === '.' || $archivo === '..') {continue;} 
     $descarga = $path."".$archivo; 
     echo "<a href=\"".$descarga."\">".$archivo."</a>"."<a title=\"Delete\" href=\"/path/to/delete/file.php?borrar_archivo=".$descarga."\"><span class=\"glyphicon glyphicon-remove\"></span></a><br>"; 
    } 

    $directorio->close(); 
?> 

和接收要删除的文件作为参数,像这样(没有测试过一个又一个,但应该接近你需要):

/path/to/delete/file.php 
<?php 
    $link = $_GET["borrar_archivo"]; 
    unlink($link); 
?> 

当然,这种做法是不,因为你是让任何人打电话网址中删除任何他们喜欢的任何方式安全,但它提供你正在寻找的目的。

让我知道是否有什么不够清楚。