Maison  >  Questions et réponses  >  le corps du texte

Supprimer les fichiers datant de plus d'un mois aaaa-mm-jj.pdf

Je souhaite supprimer les fichiers PDF datant de plus d'un mois en fonction de leurs noms de fichiers. Par exemple, si (aujourd'hui - 1 mois) est "2022-06-01.pdf", alors je souhaite supprimer des fichiers tels que "2022-04-13.pdf" et "2021-01-22.pdf". Je ne souhaite pas baser mes critères de sélection sur des dates réelles de modification ou de création.

Exemple (temporaire/)

2019-02-01.pdf  
2020-07-01.pdf  
2021-03-10.pdf  
2021-08-04.pdf  
2022-03-30.pdf
2019-02-27.pdf  
2020-07-08.pdf  
2021-03-17.pdf  
2021-08-11.pdf  
2022-04-06.pdf

HTML

oldFiles(); purgeOLD();

JS

function oldFiles() { // this is ok
yesterday = new Date();
yesterday.setDate(yesterday.getDate() - 30);

actualYear = yesterday.getFullYear();
actualMonth = yesterday.getMonth() + 1;
actualDay = yesterday.getDate();

if (actualMonth < "10") {actualMonth = "0" + actualMonth;}
if (actualDay < "10") {actualDay = "0" + actualDay;}

backtrack = actualYear +'-' +actualMonth +'-' +actualDay;
}

function purgeOLD () { // is this where the problem is ?
var new_data = backtrack; var data; 
$.ajax({url: 'test.php', type: 'post', async: false, data: {user: new_data}});
}

PHP "test.php"

<?php // or is this ?
$result = $_GET['user'];
$rdm = $result .'.pdf';
$glob = glob("temp/2???-??-??.pdf");

foreach($glob as $file) {
if ($file < $rdm) {
{unlink('/home/example/public_html/temp/' .$file ."'"))}    
}
}

?>

P粉158473780P粉158473780260 Il y a quelques jours450

répondre à tous(1)je répondrai

  • P粉147747637

    P粉1477476372024-02-26 19:51:10

    Je ferais cela entièrement côté serveur.

    1. Créez une instanceDateTime pour
    2. "il y a 1 mois"
    3. Créer un nom de fichier à partir de cette instance
    4. Parcourez les fichiers et comparez les noms de base (ignorez tout préfixe de répertoire)
    5. Si le nom du fichier représente une date avant "Il y a 1 mois"
    6. veuillez le supprimer
    🎜
    $lastMonth = new DateTimeImmutable('-1 month');
    $cutoff = sprintf('%s.pdf', $lastMonth->format('Y-m-d'));
    
    $glob = glob("temp/2???-??-??.pdf");
    
    foreach($glob as $file) {
        if (basename($file) < $cutoff) {
            unlink($file);
        }
    }
    

    répondre
    0
  • Annulerrépondre