I am using laravel 5.4. I upload some document file in storage/app/public/documents folder like
$request->paper_file->store('documents');
and my file uploaded successfully.
in file system default storage is public and public conf is like
'public' => [
'driver' => 'local',
'root' => storage_path('app/public'),
'url' => env('APP_URL').'/storage',
'visibility' => 'public',],
but when i hit /storage/documents/hQqlgifnVVH8bmrRPVdZ9aFGbhLmcc7g7bHZSX4u.pdf it says not found 404. How to solve this issue.
By default Laravel puts files in the storage/app/public
directory, which is not accessible from the outside web. So you have to create a symbolic link between that directory and your public one:
storage/app/public -> public/storage
You can do that by executing the php artisan storage:link
command (docs).
In laravel ^5.8:
php artisan storage:link
to link storage/app/public
with public/storage
.now:
// 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 );
This problem happen to me after moving project to different folder. If you already have storage link generated, try to delete public/storage folder and run again:
php artisan storage:link
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With