2017-06-08 1 views
1

je veux faire supprimer liste, mais à l'exception fichier mp3 et mp4Comment ajouter le fichier actuel à "supprimer la liste" sauf le fichier avec l'extension mp3 et mp4?

mon code est

erreur

Erreur fatale: Appel à endsWith undefined function() dans E: \ xampp \ htdocs \ tes \ index. php sur la ligne 39

$files = new RecursiveIteratorIterator(
    new RecursiveDirectoryIterator($rootPath), 
    RecursiveIteratorIterator::LEAVES_ONLY 
); 

foreach ($files as $name => $file) 
{ 
    // Skip directories (they would be added automatically) 
    if (!$file->isDir()) 
    { 
     // Get real and relative path for current file 
     $filePath = $file->getRealPath(); 
     $relativePath = substr($filePath, strlen($rootPath) + 1); 

     // Add current file to archive 
     $zip->addFile($filePath, $relativePath); 
     $zip->close(); 

     // Add current file to "delete list" 
     // delete it later cause ZipArchive create archive only after calling close function and ZipArchive lock files until archive created) 
     if ($file->getFilename().endsWith(".mp3")) error at this code 
     { 
      $filesToDelete[] = $filePath; 
     } 
    } 
} 

quelqu'un me aider s'il vous plaît

+0

vérifier le type MIME du fichier, fichier-extensions (par exemple .mp3) ne sont pas fiables – Sepultura

+0

son ne peut pas résoudre –

+0

Je remarque que vous avez spécifié la balise 'php-5.3'. Sachez que cette version php est maintenant très ancienne et non supportée. Vous devriez envisager de mettre à jour au moins la version 5.6 afin d'éviter les problèmes de sécurité. – Simba

Répondre

0

La fonction est pas endsWith. Vous devez créer le vôtre. Vérifiez cet exemple.

startsWith() and endsWith() functions in PHP

+0

Alors que dois-je faire? –

+0

Vérifiez le lien dans mon commentaire il y a un exemple, comment implémenter cette fonctionnalité –

1

Encore une fois, vérifier le fichier d'extension est peu fiable. Vous devriez vérifier le type mime du fichier avec: mime_content_type.

Dans votre code, vous pouvez faire quelque chose comme ceci:

// Add current file to "delete list" 
     // delete it later cause ZipArchive create archive only after calling close function and ZipArchive lock files until archive created) 
     if (mime_content_type($filePath) == "audio/mp3")) 
     { 
      $filesToDelete[] = $filePath; 
     } 

Mais attention parce qu'il ya beaucoup de sommes différents types MIME pour mp3, comme vous pouvez le voir here.

modifier: Si vous wan't pour vérifier plusieurs mime_types vous pouvez utiliser in_array:

if(in_array(mime_content_type($filePath), ['audio/mp3','audio/mpeg'])) 
+0

Même vérifier le type mime peut être peu fiable et dangereux, mais au moins c'est mieux que les extensions de fichiers. – Simba

+0

comment ajouter deux type ?? signifie audio/mp3 et vidéo/mp4 ou plus –

+0

voir mon édition, utilisez in_array – Sepultura