6
votes

Comment obtenir la liste des fichiers du dossier public Laravel

J'ai des images dans mon dossier public (PAS DE STOCKAGE) :

 entrez la description de l'image ici

Et je veux mettre tous ces fichiers dans une liste et pour chacun, je fais quelque chose ... Comment puis je faire ça?


3 commentaires

Copie possible de Obtenir les noms de tous les fichiers dans un annuaire avec PHP


Ahh! Mais j'utilise laravel? pouvez-vous mettre votre réponse si vous le souhaitez :)


Vous avez une réponse de Mozammil


4 Réponses :


14
votes

Vous pouvez le faire en une seule ligne:

use File;

$files = File::files(public_path());

// If you would like to retrieve a list of 
// all files within a given directory including all sub-directories    
$files = File::allFiles(public_path()); 

Pour plus d'informations, consultez la documentation .

Modifier : la documentation est déroutante. Il semble que vous deviez utiliser la façade File à la place. Je vais enquêter un peu plus, mais cela semble fonctionner maintenant.

De plus, le résultat sera un tableau de SplFileInfo objets.


5 commentaires

mais je veux dire public dans mon script pas chemin de stockage :)


J'ai modifié ma réponse.


mais comment puis-je obtenir, juste le nom de mon fichier?


Vous feriez une boucle foreach puis pour obtenir le nom du fichier, vous pouvez simplement faire $ file-> getFilename ();


Ok, j'ai utilisé getFileName () - Merci :)



1
votes

Résolu! J'ai utilisé cette fonction et ça marche:

// GET PUBLIC FOLDER FILES (NAME)
if ($handle = opendir(public_path('img'))) {

    while (false !== ($entry = readdir($handle))) {
        if ($entry != "." && $entry != "..") {
            echo $entry."<br>"; // NAME OF THE FILE
        }
    }
    closedir($handle);
}

Merci @MyLibary :)


0 commentaires

0
votes

Si vous parlez du dossier public qui n'est pas dans le dossier STORAGE , mais, si vous souhaitez gérer strong> ceci avec Laravel Storage (Laravel Filesystem), Vous pouvez définir ce dossier comme un disque pour le système de fichiers et l'utiliser comme suit.

Dans la configuration du système de fichiers config / filesystems.php , disques partie ajoutez ce code:

'disks' => [

        ...

        'public_site' => [
            'driver' => 'local',
            'root' => base_path('../../public'),
            'visibility' => 'public',
        ],

        ...
    ],

Et puis vous pouvez utiliser ces commandes dans votre application:

$files = Storage::files('img');

$files = Storage::allFiles('img');

ou pour obtenir la liste des fichiers:

$contents = Storage::get('img/file.jpg');

Plus de détails sur Laravel Storage (Laravel Filesystem) sont ici: https://laravel.com/docs/5.8/filesystem

Remarque : Si vous avez changé de dossier public, vous pouvez utiliser base_path () dans la définition du disque avec le chemin relatif comme suit ( Sinon, ne l'utilisez pas ):

XXX


0 commentaires

0
votes

Solution 1 pour Laravel

public function index()
{
    $path = public_path('demo');
    $files = scandir($path);
    dd($files);
}

Solution 2 pour Laravel

public function index()
{
    $path = public_path('test');
    $files = File::files($path);

    dd($files);
}

Solution pour PHP

public function index()
{
    $path = public_path('test');
    $files = File::allFiles($path);

    dd($files);
}


0 commentaires