Foros del Web » Programando para Internet » PHP »

borrar archivos y carpetas

Estas en el tema de borrar archivos y carpetas en el foro de PHP en Foros del Web. Hola amigos de fdw, les cuento que estoy haciendo una galeria de fotos en flash, combinada con php para subir las fotos y crear los ...
  #1 (permalink)  
Antiguo 22/04/2010, 13:05
 
Fecha de Ingreso: febrero-2008
Mensajes: 79
Antigüedad: 16 años, 2 meses
Puntos: 1
Hola amigos de fdw, les cuento que estoy haciendo una galeria de fotos en flash, combinada con php para subir las fotos y crear los xml y tambien para borrar los archivos. Solo que el unico problema me los da el borrarlos. espero me puedan ayudar con esto que me ha dado mas de un dolor de cabeza. saludos

codigo uno, muestra los archivos y carpetas para poder seleccionarlas.
la estructura es asi: dentro de la carpeta albums, hay una carpeta con el nombre del album, el cual contiene 2 carpetas una "grande" y otra "peq" para la foto en grande y el thumbnail, ademas dentro de la carpeta del album hay 3 archivos, fotos.xml, fotos_v6.fla y fotos_v6.swf para mostrar el album.

cualquier consulta la respondere lo mas pronto posible, espero me puedan ayudar y que tambien sirva a alguien que este buscando algo parecido.

los resultados mas comunes obtenidos son:
que la carpeta del album contiene archivos, que no tengo permisos para eliminar "grande" y "peq" y por ultimo que logro borrar una foto, el xml, el fla y el swf pero despues no puedo borrar mas fotos.

Código PHP:
<html>
<head><title></title></head>
<script language="javascript" type="text/javascript">/*para seleccionar todos los checkbox de los archivos incluidos en la carpeta que se borrará*/
    function subfiles(id){
        confirmar = confirm("Si elimina esta carpeta, todas las fotos contenidas en la misma serán eliminadas, ¿desea continuar?");
        if(confirmar){
            /*var arrLen = document.getElementsByTagName('div');
            alert(arrLen);*/
        }
        else{
            
        }
    }
    function filecheck(id){
        
    }
</script>
<body>
Esta sección solo sirve para eliminar los archivos, si desea cambiar el nombre o moverlo a otra carpeta, debe borrarlo y subirlo con el nombre y/o en la carpeta deseada.<p>
Para eliminar un archivo o una carpeta debe seleccionarla en el cuadro que se encuentra a la derecha de cada item, una vez seleccionado todos los items a eliminar; presiona el botón eliminar para finalizar la acción.<p>
<form name="fileadmin" id="fileadmin" action="confirm.php" method="post">
<input type="submit" value="Eliminar Selección" id="del" name="del"/><!--boton para eliminar-->
<?php
 
// Your start directory
getDirectory('../albums');//aqui estan las carpetas de albums de fotos

function getDirectory$path '.'$level )

// ignorar estos resultados como directorios.    
$ignore = array( '.''..' ); 

// abrir el directorio a manipular $dh
$dh = @opendir$path ); 
$a=0;
// recorrer el directorio
while( false !== ( $file readdir$dh ) ) ) 

// este archivo no será ignorado
if( !in_array$file$ignore ) )

// 
$spaces str_repeat'&nbsp;', ( $level ) );

// solo mostrar directorios
if(is_dir"$path/$file" ) )

// Re-call this same function but on a new directory. 
// this is what makes function recursive.    
if($file != "_notes")//este directorio lo crea solo dreamweaver, por eso se omite
$updir $file;
echo 
"<li><img width='50' height='50' src='../../Resources/Icons/My-Documents-icon.png' /><a href=\"../albums/".$file."/\">".$file."</a><input type='checkbox' id=\"".$file."\" name=\"".$file."\" onclick='subfiles(this.id)' /><br><br><div id=\"div".$file."\">";//genera el icono de la carpeta y el checkbox para seleccionar eliminarla
if ($handle opendir('../albums/'.$file.'/grande/')) {//para listar archivos
    
while (false !== ($file readdir($handle))) {//recorre el album y la carpeta grande para mostrar las fotos
        
{
        if(
end(explode("."$file))== 'jpg'){
            
$extension pathinfo($filePATHINFO_EXTENSION);
            
$noext basename($file'.'.$extension);
            echo 
"<img src=\"../albums/".$updir."/grande/".$file."\" width=\"70\" height=\"50\">".$file."<input type='checkbox' id=\"file".$updir."\" name=\"".$noext."\" onclick='filechecked(this.id)' /><br>";se genera un incono pequeño de la foto y el checkbox para seleccionarla
        
}
        }
    }
    echo 
"</div><br>";
    
closedir($handle);
}
//aqui termina para listar archivos




$a$a +1;
}
// Close the directory handle 
closedir$dh ); 

?>
</form>
</body>
El archivo que recibe la informacion, es decir, los archivos y/o carpeta seleccionados para eliminar y eliminar automaticamente todas las fotos de un directorio seleccionado.

confirm.php
Código PHP:
<?php
    
//llenar arreglo con lista de carpetas y archivos
    //comprobar si seleccionó archivo o carpeta
    //si seleccionó carpeta utilizar rmdir
    //si seleccionó archivo utilizar unlink
    //listo
    
    
$handle2 opendir('../../PicGalery/albums/');//call the folder
    
while (($file2 readdir($handle2))) {//bucle to call folders
    
if ($file2 != '.' && $file2 != '..' && $file2 != '_notes'){
     
$afiles opendir('../../PicGalery/albums/'.$file2.'/grande/');//abre directorio con fotos grandes
     
$bfiles opendir('../../PicGalery/albums/'.$file2.'/peq/');//abre directorio con thumbnails
     
while (($file3 readdir($afiles))) {//bucle to call files
    
if ($file3 != '.' && $file3 != '..' && $file3 != '_notes'){
    
$extension pathinfo($file3PATHINFO_EXTENSION);//llama archivo y le quita la extension para poder llamar al input de nombre "archivo(sin extension"
            
$noext basename($file3'.'.$extension);
        if (isset(
$_POST[$noext])){//revisa que el checkbox del mismo nombre del file este selected
        
unlink('../../PicGalery/albums/'.$file2.'/grande/'.$file3);
     }
    }
    }
    while((
$file4 readdir($bfiles))){
        if (
$file4 != '.' && $file4 != '..' && $file4 != '_notes'){
        
$extension pathinfo($file4PATHINFO_EXTENSION);
            
$noext basename($file4'.'.$extension);
            if(isset(
$_POST[$noext])){
                
unlink('../../PicGalery/albums/'.$file2.'/peq/'.$file4);
        }
    }
     }
     }
     if(isset(
$_POST[$file2])){
         
unlink('../../PicGalery/albums/'.$file2.'/fotos.xml');
         
unlink('../../PicGalery/albums/'.$file2.'/fotos_v6.fla');
         
unlink('../../PicGalery/albums/'.$file2.'/fotos_v6.swf');
        
rmdir('../../PicGalery/albums/'.$file2.'/grande/');
        
rmdir('../../PicGalery/albums/'.$file2.'/peq/');
        
//rmdir('../../PicGalery/albums/'.$file2.'/_notes/');
        
rmdir('../../PicGalery/albums/'.$file2);}
    }
    
    
closedir($handle2);closedir($afiles);closedir($bfiles); //close directory    
    
    
    
    /*$handle2 = opendir('../../PicGalery/albums/');//call the folder
    $a=0;
    $b=0;
    while (($file2 = readdir($handle2))) {//bucle to call files
    if ($file2 != '.' && $file2 != '..' && $file2 != '_notes'){
     $directorio[$a] = $file2; // putting file names in an array called directorio
     $a = $a + 1; 
     $afiles = opendir('../../PicGalery/albums/'.$directorio[$a-1].'/grande/');
     while (($file3 = readdir($afiles))) {//bucle to call files
    if ($file3 != '.' && $file3 != '..' && $file2 != '_notes'){
     $archivo[$directorio[$a-1],$b] = $file3; // putting file names in an array called antiguos
     $b = $b + 1; 
     }
    }
     }
    }
    
    for ($z = 0 ; $z <= $a-1; $z++){
    for ($x = 0; $x <= $b-1; $x++){
    echo("ya llego aqui");
    if (isset($_POST['fold'.$directorio[$z]])) {     // borrar directorio, además borrará archivos
        unlink('../../PicGalery/albums/'.$directorio[$z].'/grande/'.$archivo[$directorio[$z],$x]);
        unlink('../../PicGalery/albums/'.$directorio[$z].'/peq/'.$archivo[$directorio[$z],$x]);
        rmdir('../../PicGalery/albums/'.$directorio[$z].'/grande/');
        rmdir('../../PicGalery/albums/'.$directorio[$z].'/peq/');
        unlink('../../PicGalery/albums/'.$directorio[$z].'/fotos.xml');
        unlink('../../PicGalery/albums/'.$directorio[$z].'/fotos_v6.fla');
        unlink('../../PicGalery/albums/'.$directorio[$z].'/fotos_v6.swf');
    } 
    if (isset($_POST['fold'.$directorio[$z]])) {     // borrar directorio, además borrará archivos
        rmdir('../../PicGalery/albums/'.$directorio[$z].'/');
    } 
    }
    if (isset($_POST['file'.$file[$z]])){    //borrará archivos seleccionados
        unlink($file);
        unlink($directorio[$z].'/peq/'.$file[$x]);
    }
    }
    closedir($handle2); //close directory*/
?>
veo que no hay respuesta. si ayuda les dejo la muestra del administrador de las fotos.
un detalle, me acabo de dar cuenta que no elimina fotos con espacios en el nombre.
http://www.radiosomosamigos.cl/PicGa...Admin/form.php

Encontre el problema, era justamente eso, no elimina directorios por que aparecen con archivos, ya que no elimina las fotos que tienen espacio en el nombre.

De todas maneras si les gusto el administrador el codigo va a quedar ahi para que lo vean. ahora me tendre que pelear con javascript. gracias de todas maneras

Última edición por GatorV; 23/04/2010 a las 09:10

Etiquetas: borrar, carpetas
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 15:56.