save image in public folder instead storage laravel 5
Solution 1
In config/filesystems.php, you could do this... change the root element in public
'disks' => [
'public' => [
'driver' => 'local',
'root' => public_path() . '/uploads',
'url' => env('APP_URL').'/public',
'visibility' => 'public',
]
]
and you can access it by
Storage::disk('public')->put('filename', $file_content);
Solution 2
You can pass disk option to method of \Illuminate\Http\UploadedFile
class:
$file = request()->file('image');
$file->store('toPath', ['disk' => 'public']);
or you can create new Filesystem disk and you can save it to that disk.
You can create a new storage disc in config/filesystems.php
:
'my_files' => [
'driver' => 'local',
'root' => public_path() . '/myfiles',
],
in controller:
$file = request()->file('image');
$file->store('toPath', ['disk' => 'my_files']);
Solution 3
You'll need to link your storage directory to your public folder with:
php artisan storage:link
Once you've done that, to display it in the view you can do:
{{ asset('storage/file.txt') }}
Or in your case:
<img src="{{ asset('storage/app/' . $patch) }}">
Siros Fakhri
Updated on September 04, 2020Comments
-
Siros Fakhri over 3 years
i wanna save my avatar at "Public" folder and ther retrieve.
ok. i can save it but in "storage/app" folder instead "public"
my friend told me go to "config/filesystem.php" and edit it ,so i did it like this
'disks' => [ 'public' => [ 'driver' => 'local', 'root' => storage_path('image'), 'url' => env('APP_URL').'/public', 'visibility' => 'public', ],
still no change.
here my simple codes
Route :
Route::get('pic',function (){ return view('pic.pic'); }); Route::post('saved','test2Controller@save');
Controller
public function save(Request $request) { $file = $request->file('image'); //save format $format = $request->image->extension(); //save full adress of image $patch = $request->image->store('images'); $name = $file->getClientOriginalName(); //save on table DB::table('pictbl')->insert([ 'orginal_name'=>$name, 'format'=>$base, 'patch'=>$patch ]); return response() ->view('pic.pic',compact("patch")); }
View:
{!! Form::open(['url'=>'saved','method'=>'post','files'=>true]) !!} {!! Form::file('image') !!} {!! Form::submit('save') !!} {!! Form::close() !!} <img src="storage/app/{{$patch}}">
How Can save my image (and file in future) at public folder instead storage?