Laravel 6 File Uploading With Validation

Laravel 6 , Laravel

Nicesnippets

740

12-12-2019


Hi Dev,

Today, I will learn you how to store file with validation in laravel 6. I will add validation with image upload in laravel 6.

I will add image upload validation like image, mimes, max file upload etc, So you can easily understand and you it simply.In this blog made easy to upload the image to the folder and store into the database in the laravel 6.

You can upload images into folder and database with laravel validation as bellow.

We will Follow the bellow step.

Step 1 : Install Laravel project

In this step you can install fresh laravel project to using bellow command.

composer create-project --prefer-dist laravel/laravel blog

Step 2 : Create Migration & Model

Now you will bellow command to create migration and model in laravel app.

php artisan make:model Image -m

Above command to create one table migration file and one model file.

database/migrations/2019_12_11_111847_create_images_table.php

<?php

use Illuminate\Support\Facades\Schema;

use Illuminate\Database\Schema\Blueprint;

use Illuminate\Database\Migrations\Migration;

class CreateImagesTable extends Migration

{

/**

* Run the migrations.

*

* @return void

*/

public function up()

{

Schema::create('images', function (Blueprint $table) {

$table->increments('id');

$table->string('image');

$table->timestamps();

});

}

/**

* Reverse the migrations.

*

* @return void

*/

public function down()

{

Schema::dropIfExists('images');

}

}

Bellow command to use migrate your table.

php artisan migrate

Step 3 : Create Controller

In this step create controler file to use bellow command.

php artisan make:controller ImageController

Step 4 : Create Controller method

Create controller after you can put the bellow code in controller file.

app/http/controllers/ImageController

<?php

namespace App\Http\Controllers;

use App\Image;

use Illuminate\Http\Request;

class ImageController extends Controller

{

public function create()

{

return view('create');

}

public function store(Request $request)

{

$request->validate([

'img' => 'required|mimes:jpeg,jpg,png',

]);

$input = $request->all();

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

$input['img'] = $file->getClientOriginalName();

$file->move(public_path('upload'),$file->getClientOriginalName());

Image::create(['image' => $input['img']]);

return redirect()->back();

}

}

Step 5 : Create Routes

In this step you will create route in web.php file.

routes/web.php

Route::get('image','ImageController@create')->name('image.create');

Route::post('image','ImageController@store')->name('image.store');

Step 6 : Create View File

In this step you can create blade file in laravel app.

resources/views/create.blade.php

<!DOCTYPE html>

<html>

<head>

<title></title>

<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/css/bootstrap.min.css" integrity="sha384-ggOyR0iXCbMQv3Xipma34MD+dH/1fQ784/j6cY/iJTQUOhcWr7x9JvoRxT2MZw1T" crossorigin="anonymous">

<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.7.0/css/font-awesome.css" integrity="sha256-NuCn4IvuZXdBaFKJOAcsU2Q3ZpwbdFisd5dux4jkQ5w=" crossorigin="anonymous" />

<script src="https://code.jquery.com/jquery-3.3.1.slim.min.js" integrity="sha384-q8i/X+965DzO0rT7abK41JStQIAqVgRVzpbzo5smXKp4YfRvH+8abtTE1Pi6jizo" crossorigin="anonymous"></script>

<script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.7/umd/popper.min.js" integrity="sha384-UO2eT0CpHqdSJQ6hJty5KVphtPhzWj9WO1clHTMGa3JDZwrnQq4sF86dIHNDz0W1" crossorigin="anonymous"></script>

<script src="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/js/bootstrap.min.js" integrity="sha384-JjSmVgyd0p3pXB1rRibZUAYoIIy6OrQ6VrjIEaFf/nJGzIxFDsf4x0xIM+B07jRM" crossorigin="anonymous"></script>

</head>

<body>

<div class="container">

<div class="row mt-5">

<div class="col-md-6 offset-3">

<div class="card">

<div class="card-heading bg-success">

<h2 class="text-center text-white p-2"><b>Upload Image</b></h2>

</div>

<div class="card-body">

@if (count($errors) > 0)

@foreach($errors->all() as $error)

<div class="alert alert-danger">{{ $error }} </div>

@endforeach

@endif

<form action="{{ route('image.store') }}" method="post" enctype="multipart/form-data">

@csrf

<div class="form-group">

<label>Image*</label>

<input type="file" name="img" class="form-control">

</div>

<div class="form-group" class="text-center">

<button class="btn btn-success btn-sm">Save</button>

</div>

</form>

</div>

</div>

</div>

</div>

</div>

</body>

</html>

It will help you...


Recommended Posts