J'utilise laravel 5.4. Je télécharge un fichier de document dans le dossier storage/app/public/documents comme
$request->paper_file->store('documents');
et mon fichier a été téléchargé avec succès.
dans le stockage par défaut du système de fichiers est public et conf public est comme
'public' => [
'driver' => 'local',
'root' => storage_path('app/public'),
'url' => env('APP_URL').'/storage',
'visibility' => 'public',],
mais lorsque j'appuie sur /storage/documents/hQqlgifnVVH8bmrRPVdZ9aFGbhLmcc7g7bHZSX4u.pdf, il est dit non trouvé 404. Comment résoudre ce problème.
Par défaut Laravel place les fichiers dans le storage/app/public
répertoire, qui n'est pas accessible depuis le Web extérieur. Vous devez donc créer un lien symbolique entre ce répertoire et votre répertoire public:
storage/app/public -> public/storage
Vous pouvez le faire en exécutant le php artisan storage:link
commande ( docs ).
Dans laravel ^ 5.8:
php artisan storage:link
lier storage/app/public
avec public/storage
.maintenant:
// this return some like 'public/documents/file.ext'
$path = $request->paper_file->store('public/documents');
// this return some like 'storage/documents/file.ext'
$publicPath = \Storage::url( $path) );
// this return some like '< APP_URL env variable >/storage/documents/file.ext'
$url = asset( $publicPath );