Je veux récupérer une URL publique pour tous les fichiers stockés à l'aide de
storage :: putFile ('public/spares');
Donc, c'est le problème que j'utilise
stockage :: fichiers ('public/spares');
mais il fournit cette sortie du répertoire de stockage de laravel
public/spares/image1.jpg
public/spares/image2.jpg
public/spares/image3.jpg
comment puis-je obtenir le lien public pour ce qui précède
http://localhost/laravel/public/storage/spares/image1.jpg
http://localhost/laravel/public/storage/spares/image2.jpg
http://localhost/laravel/public/storage/spares/image3.jpg
**Modifier **
Envoi des dernières données modifiées des fichiers à afficher
$docs = File::files('storage/document');
$lastmodified = [];
foreach ($docs as $key => $value) {
$docs[$key] = asset($value);
$lastmodified[$key] = File::lastmodified($value);
}
return view('stock.document',compact('docs','lastmodified'));
Est-ce correct
Qu'en est-il de Storage::url
? Cela fonctionne même pour le stockage local.
Vous pouvez trouver plus ici: https://laravel.com/docs/5.4/filesystem#file-urls
Si vous voulez renvoyer tous les URL des fichiers du répertoire, vous pouvez faire quelque chose comme ceci:
return collect(Storage::files($directory))->map(function($file) {
return Storage::url($file);
})
N'oubliez pas d'injecter le \Illuminate\Filesystem\FilesystemManager
à la place de la façade Storage
si vous recherchez un chemin non façade.
Modifier:
Il y a 2 (ou plus) moyens de traiter les dates modifiées:
Passe les fichiers à la vue.
| ous pouvez passer votre Storage::files($directory)
directement à la vue puis, dans votre modèle, utilisez les éléments suivants:
// controller:
return view('view', ['files' => Storage::files($directory)]);
// template:
@foreach($files as $file)
{{ Storage::url($file) }} - {{ $file->lastModified }} // I'm not sure about lastModified property, but you get the point
@endforeach
Retourne un tableau:
return collect(Storage::files($directory))->map(function($file) {
return [
'file' => Storage::url($file),
'modified' => $file->lastModified // or something like this
]
})->toArray()
Vous devez d’abord créer le lien symbolique de votre répertoire public/storage
vers votre répertoire storage/app/public
pour pouvoir accéder aux fichiers. Vous pouvez le faire avec:
php artisan storage:link
Vous pouvez alors stocker vos documents avec:
Storage::putFile('spares', $file);
Et y accéder comme un atout avec:
asset('storage/spares/filename.ext');
Découvrez la documentation sur le disque public
Eh bien, j'ai trouvé la solution, au lieu de chercher dans le stockage
$ docs = Stockage: fichiers ('public/spares');
nous pouvons rechercher le lien symbolique
$ docs = File: files ('storage/spares');
puis exécutez-le via la fonction asset () pour obtenir l'URL publique. Y a-t-il une meilleure solution?