Foros del Web » Programando para Internet » PHP »

borrar imagenes que tenga x tiempo en una carpeta

Estas en el tema de borrar imagenes que tenga x tiempo en una carpeta en el foro de PHP en Foros del Web. Hola como estan... Tengo este codigo el cual borra todos los archivos de una carpeta que tengan x tienpo, aqui esta ha un dia. Código ...
  #1 (permalink)  
Antiguo 16/10/2014, 05:00
Avatar de randy05  
Fecha de Ingreso: agosto-2012
Mensajes: 37
Antigüedad: 11 años, 8 meses
Puntos: 1
Pregunta borrar imagenes que tenga x tiempo en una carpeta

Hola como estan...

Tengo este codigo el cual borra todos los archivos de una carpeta que tengan x tienpo, aqui esta ha un dia.

Código PHP:
<?php
    $dir 
opendir('1/');
    while(
$f readdir($dir))
    {
     
    if((
time()-filemtime('1/'.$f) > 3600*24*1) and !(is_dir('1/'.$f)))
    
unlink('1/'.$f);
    }
    
closedir($dir);
    
?>
dicho codigo me funciona bien, pero he aqui mi problema, yo lo que quiero hacer es que el codigo no me borres todos los archivos si no que me borre los tipos de archivos que yo le diga.

Ejemplo.

en dicha carpeta tengo mas carpetas adentro de ella y archivos jpg, jpeg, png, gif - txt - pdf

que solo me borre las imagenes jpg, jpeg y png que tenga en este caso mas de 1 dia en dicha carpeta
  #2 (permalink)  
Antiguo 16/10/2014, 06:04
Avatar de enlinea777  
Fecha de Ingreso: mayo-2008
Ubicación: frente al pc
Mensajes: 1.830
Antigüedad: 16 años
Puntos: 127
Respuesta: borrar imagenes que tenga x tiempo en una carpeta

Código PHP:
  <?php
    $dir 
opendir('1/');
    while(
$f readdir($dir))
    {
     
$f//si $f es file
    
$extension endexplode('.'$f) );     //  busca  la extencion
    
$estenciones = array("jpg","jpeg","png","gif","txt","pdf"); // lista de estrenciones
    
if (in_array($extension$estenciones)) { // si la extencion esta en extenciones entonces borrar=true
    
$borrar=true;
    }else{
    
$borrar=false;    
    }
    if((
time()-filemtime('1/'.$f) > 3600*24*1) && !(is_dir('1/'.$f)) && $borrar){ //agregamos borrar
    
unlink('1/'.$f);
    }
    
closedir($dir);
    
?>
  #3 (permalink)  
Antiguo 16/10/2014, 09:40
Avatar de hhs
hhs
Colaborador
 
Fecha de Ingreso: junio-2013
Ubicación: México
Mensajes: 2.995
Antigüedad: 10 años, 10 meses
Puntos: 379
Respuesta: borrar imagenes que tenga x tiempo en una carpeta

Randy05 procura tomar tiempo para refactorizar el código, por que de verdad en menos de lo que piensas vas a tener código difícil de leer y de mantener.
Código PHP:
Ver original
  1. $extenciones = array("jpg","jpeg","png","gif","txt","pdf");
  2.  
  3. if ($handle = opendir('1/')) {
  4.  
  5.     while (false !== ($entry = readdir($handle))) {
  6.  
  7.         if ($entry != "." && $entry != "..") {
  8.  
  9.             if(!is_file($entry) || !checkExtension($entry, $extenciones))
  10.             {
  11.                 continue;
  12.             }
  13.  
  14.             if(checkDiffTime($entry))
  15.             {
  16.                 unlink($entry);
  17.             }
  18.  
  19.         }
  20.     }
  21.     closedir($handle);
  22. }
  23.  
  24. function checkDiffTime($file)
  25. {
  26.     return (time()-filemtime($file) > 3600*24*1);
  27. }
  28.  
  29. function checkExtension($file,$extenciones)
  30. {
  31.     $array = explode('.',$file);
  32.     $extension = end($array);
  33.     return in_array($extension, $extenciones) ? true : false;
  34. }
Recuerda probarlo antes de usarlo, por que lo hice a partir de tu ejemplo y el de enlinea777 y no tengo forma de probarlo en este momento.
__________________
Saludos
About me
Laraveles
A class should have only one reason to change.

Última edición por hhs; 16/10/2014 a las 11:05 Razón: Error de dedo
  #4 (permalink)  
Antiguo 16/10/2014, 16:43
Avatar de randy05  
Fecha de Ingreso: agosto-2012
Mensajes: 37
Antigüedad: 11 años, 8 meses
Puntos: 1
Respuesta: borrar imagenes que tenga x tiempo en una carpeta

Grasias por los codigos, los utilise y me funciono el de enlinea777 el codigo de hhs no me funciono, o no ce si fue que no supe como utilizarlo, es que soy novato en esto de php, perdonen mi ignorancia.


Tengo otra pregunta ya se como eliminar las extenciones que deseo pero si pongo la estencion jpg para que me borre todas las imagenes jpg

Código PHP:
$estenciones = array("jpg","jpeg"); // lista de estrenciones 
pero quiero que no me borre a
Código:
fulanito.jpg
por ejemplo, como le añado esa excession.

de antemano muchimas grasias...
  #5 (permalink)  
Antiguo 17/10/2014, 06:32
Avatar de enlinea777  
Fecha de Ingreso: mayo-2008
Ubicación: frente al pc
Mensajes: 1.830
Antigüedad: 16 años
Puntos: 127
Respuesta: borrar imagenes que tenga x tiempo en una carpeta

Colocando una condicion, pues lo que no quieres borrar, no es una extencion sino un archivo.

un simple if puede ayudarte
Código PHP:
  <?php
    $dir 
opendir('1/');
    while(
$f readdir($dir))
    {
     
$f//si $f es file
    
$extension endexplode('.'$f) );     //  busca  la extencion
    
$estenciones = array("jpg","jpeg","png","gif","txt","pdf"); // lista de estrenciones
    
$archivos=array('fulanito.jpg');
    if (
in_array($extension$estenciones) && !in_array($f,$archivos)) { // si la extencion esta en extenciones y el nombre del archivo no esta en ls excepciones '$archivos' entonces borrar=true
    
$borrar=true;
    }else{
    
$borrar=false;    
    }
    if((
time()-filemtime('1/'.$f) > 3600*24*1) && !(is_dir('1/'.$f)) && $borrar){ //agregamos borrar
    
unlink('1/'.$f);
    }
    
closedir($dir);
    
?>

Etiquetas: carpeta, imagenes, tiempo
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 11:28.