Mithun
Mithun

Reputation: 73

Upload image in public folder

I am trying to insert image in database using laravel 5.4. It works. But when I search that directory then it does not appear there. I also want to validate only images should be upload and size. Thanks for advance.

My Controller function is here

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use DB;
use Hash;
use App\User;
class regController extends Controller
{

public function create(Request $request)
{
    $this-> validate(request(),[
    'name' => 'required',
    'email'=> 'required',
    'type' => 'required',
    'image' => 'required',
    'password' => 'required|confirmed|min:6', 
    ]);

    $request['password'] = bcrypt($request -> password);

    $User = new User($request->input()) ;
    if($file = $request->hasFile('image')) {

        $file = $request->file('image') ;

        $fileName = $file->getClientOriginalName() ;
        return Storages::putFile('public/images',$request->file('image'));
        $destinationPath = public_path().'images/' ;
        $file->move($destinationPath,$fileName);
        $User->image = $fileName ;
    }

    $user = 
          User::create(request(['name','email','type','image','password']));
    return redirect('login');
}

Upvotes: 0

Views: 5159

Answers (2)

Amr Aly
Amr Aly

Reputation: 3905

try this :

// Validation
$this->validate($request, [
   'image' => 'required|image|mimes:jpeg,bmp,png|max:10240' // size in kelobytes this equals 10 mb
]);

 $User = new User() ;
 $User->password = bcrypt($request->password);
 $User->name = $request->name;
 $User->type = $request->type;
 $User->email = $request->email;
 $filename = $this->getFileName($request->image);
 $request->image->move(base_path('public/images'), $filename);
 $User->image = $fileName;
 $$User->save();
 return back()->with('success','Image Upload successful');

I just forgot to show you how to implement getFileName function to generate a unique filename sorry about that, in your controller you can define it as protected method like so:

protected function getFileName($file)
{
   return str_random(32) . '.' . $file->extension();
}

Upvotes: 3

Andrii Pryimak
Andrii Pryimak

Reputation: 817

I think you are tryin to do smth like this:

public function fileUpload(Request $request)

{

    $this->validate($request, [

        'image' => 'required|image|mimes:jpeg,png,jpg,gif,svg|max:2048',

    ]);


    $image = $request->file('image');

    $input['imagename'] = time().'.'.$image->getClientOriginalExtension();

    $destinationPath = public_path('/images');

    $image->move($destinationPath, $input['imagename']);


    $this->postImage->add($input);


    return back()->with('success','Image Upload successful');

}

Upvotes: 0

Related Questions