web-dev-qa-db-fra.com

Laravel 5.4 fichier de stockage introuvable

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.

6
Iftakharul Alam

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 ).

22
Jebediah

Dans laravel ^ 5.8:

  • Assurez-vous d'exécuter la commande 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 );

1
Franklin'j Gil'z