Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Laravel 5.4 storage file not found

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.

like image 216
Iftakharul Alam Avatar asked Apr 22 '17 16:04

Iftakharul Alam


3 Answers

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

like image 102
Jebediah Avatar answered Nov 15 '22 14:11

Jebediah


In laravel ^5.8:

  • Make sure you run the command 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 );

like image 39
Franklin'j Gil'z Avatar answered Nov 15 '22 14:11

Franklin'j Gil'z


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
like image 40
emilis Avatar answered Nov 15 '22 13:11

emilis