Laravel 7/6 File Upload Validation Example Tutorial

Laravel 7, 6 file upload example tutorial. This tutorial shows you an easy way to upload the file into MySQL database and folder in laravel wtih validation rules.

Laravel file upload with validation tutorial will guide you on how to upload file with validation in laravel app. As well as before upload file, validate file and file type using laravel validator and then store the file to the database and folder.

Laravel File Upload with Validation Tutorial

Laravel makes file uploading with validation are very simple. So, you follow the below steps and upload files in laravel 7,6 with validation:

  • Install Laravel Fresh New Setup
  • Setup Database Credentials
  • Generate Migration & Model
  • Add Route
  • Create Controller & Methods
  • Create Blade View
  • Run Development Server

1). Install Laravel Fresh New Setup

First, you need to download the laravel fresh setup. Use the below command and download fresh new laravel setup :

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

2). Setup Database Credentials

After successfully install laravel Application, Go to your project .env file and set up database credential and move next step :

 DB_CONNECTION=mysql
 DB_HOST=127.0.0.1
 DB_PORT=3306
 DB_DATABASE=here your database name here
 DB_USERNAME=here database username here
 DB_PASSWORD=here database password here

3). Generate Migration & Model

Now you will create a table named documents and it’s migration file. use the below command :

php artisan make:model document -m

Its command will create one model name file and also create one migration file for the file table. After successfully run the command go to database/migrations file and put the below here :

<?php

use Illuminate\Support\Facades\Schema;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Database\Migrations\Migration;

class CreatedocumentsTable extends Migration
{
    /**
     * Run the migrations.
     *
     * @return void
     */
    public function up()
    {
        Schema::create('documents', function (Blueprint $table) {
            $table->increments('id');
            $table->string('title');
            $table->timestamps();
        });
    }

    /**
     * Reverse the migrations.
     *
     * @return void
     */
    public function down()
    {
        Schema::dropIfExists('documents');
    }
}

Next, migrate the table using the below command :

php artisan migrate

4). Add Route

In this step, you need to create two routes in the web.php file. Go to app/routes/web.php file and create two below routes here :

 Route::get('file', 'FileController@index');
 Route::post('save', 'FileController@save');

5). Create Controller

Now, you need to create a controller name FileController. Use the below command and create Controller :

php artisan make:controller FileController

After successfully create controller go to app/controllers/FileController.php and put the below code :

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use Validator,Redirect,Response,File;
Use App\Document;

class FileController extends Controller
{

    public function index()
    {
        return view('file');
    }

    public function save()
    {
       request()->validate([
         'file'  => 'required|mimes:doc,docx,pdf,txt|max:2048',
       ]);

       if ($files = $request->file('fileUpload')) {
           $destinationPath = 'public/file/'; // upload path
           $profilefile = date('YmdHis') . "." . $files->getClientOriginalExtension();
           $files->move($destinationPath, $profilefile);
           $insert['title'] = "$profilefile";
        }

        $check = Document::insertGetId($insert);

        return Redirect::to("file")
        ->withSuccess('Great! file has been successfully uploaded.');

    }
}

6). Create Blade view

In this step, you need to create a blade view file. Go to app/resources/views and create one file name file.blade.php :

<html lang="en" class="">
<head>
<meta charset="UTF-8">
<title>Laravel File Upload Tutorial Example From Scratch</title>
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/normalize/5.0.0/normalize.min.css">
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/4.1.3/css/bootstrap.min.css" />
</head>
<body>
<div class="container">
  <div class="row justify-content-center">
    <div class="card">
	   <div class="card-header">Laravel Upload File Example</div>

	     <div class="card-body">
	        @if ($message = Session::get('success'))

	            <div class="alert alert-success alert-block">

	                <button type="button" class="close" data-dismiss="alert">×</button>

	                <strong>{{ $message }}</strong>

	            </div>
	        @endif

	        @if (count($errors) > 0)
	            <div class="alert alert-danger">
	                <strong>Whoops!</strong> There were some problems with your input.<br><br>
	                <ul>
	                    @foreach ($errors->all() as $error)
	                        <li>{{ $error }}</li>
	                    @endforeach
	                </ul>
	            </div>
	        @endif

	        <form action="/save" method="post" enctype="multipart/form-data">
	            @csrf
	            <div class="form-group">
	                <input type="file" class="form-control-file" name="file" id="file" aria-describedby="fileHelp">
	                <small id="fileHelp" class="form-text text-muted">Please upload a valid image file. Size of image should not be more than 2MB.</small>
	            </div>
	            <button type="submit" class="btn btn-primary">Submit</button>
	        </form>

	     </div>
     </div>
  </div>
</div>
</html>

7). Run Development Server

Finally, you need to start the development server. Use the PHP artisan serve command and start your server :

 php artisan serve
If you want to run the project diffrent port so use this below command
php artisan serve --port=8080

Now you are ready to run our example, so run bellow command to quick run.

 http://localhost:8000/file
 OR hit in browser
 http://localhost/blog/public/file

If you want to remove public or public/index.php from URL In laravel, Click Me

Conclusion

In this tutorial, you have successfully uploaded files in folder and MySQL database with laravel application. Our examples run quickly.

You may like

  1. Laravel Upload Image Using Dropzone js Tutorial
  2. Upload Files/Images to Amazon s3 Cloud Using Laravel 6 Filesystem
  3. Laravel 7 CKEditor with Image Upload
  4. Laravel 7 Ajax Image Upload Tutorial Example From Scratch
  5. Intervention Upload Image Using Ajax in laravel – Example
  6. Laravel 7 Upload Image to Database with Validation
  7. Laravel 7 Multiple File Upload With Validation Example

If you have any questions or thoughts to share, use the comment form below to reach us.

AuthorDevendra Dode

Greetings, I'm Devendra Dode, a full-stack developer, entrepreneur, and the proud owner of Tutsmake.com. My passion lies in crafting informative tutorials and offering valuable tips to assist fellow developers on their coding journey. Within my content, I cover a spectrum of technologies, including PHP, Python, JavaScript, jQuery, Laravel, Livewire, CodeIgniter, Node.js, Express.js, Vue.js, Angular.js, React.js, MySQL, MongoDB, REST APIs, Windows, XAMPP, Linux, Ubuntu, Amazon AWS, Composer, SEO, WordPress, SSL, and Bootstrap. Whether you're starting out or looking for advanced examples, I provide step-by-step guides and practical demonstrations to make your learning experience seamless. Let's explore the diverse realms of coding together.

Leave a Reply

Your email address will not be published. Required fields are marked *