Laravel 8 File Upload Tutorial |
---------------------------
$Imgefile = $request->file('SideLogo');
$ImgefileName = $Imgefile->getClientOriginalName();
$Imgefile->move(public_path('images'), $ImgefileName);
----------------------------
File Upload in Laravel 8 Example Tutorial
- Step 1 – Download Laravel 8 Application
- Step 2 – Database Configuration
- Step 3 – Build File Model & Migration
- Step 4 – Create Routes
- Step 5 – Build Upload Controller By Artisan Command
- Step 6 – Create File Upload Form
- Step 7 – Create Directory inside Storage/app/public
- Step 8 – Run Development Server
Step 1 – Download Laravel 8 Application
First of all, download or install laravel 8 new setup. So, open terminal and type the following command to install new laravel 8 app into your machine:
composer create-project --prefer-dist laravel/laravel LaravelFileUpload
Step 2 – Database Configuration
In this step, setup database with your downloded/installed laravel 8 app. So, you need to find .env file and setup database details as following:
1 2 3 4 5 6 | DB_CONNECTION=mysql DB_HOST=127.0.0.1 DB_PORT=3306 DB_DATABASE=database-name DB_USERNAME=database-user-name DB_PASSWORD=database-password |
Step 3 – Build File Model & Migration
In this step, open again your command prompt. And run the following command on it. To create model and migration files:
php artisan make:model File -m
After that, open create_files_table.php file inside /database/migrations/ directory. And the update the function up() with following code:
1 2 3 4 5 6 7 8 9 | public function up() { Schema::create( 'files' , function (Blueprint $table ) { $table ->id(); $table ->string( 'name' ); $table ->string( 'path' ); $table ->timestamps(); }); } |
Then, open again command prompt and run the following command to create tables into database:
php artisan migrate
Step 4 – Create Routes
In this step, open web.php file from routes direcotry. And update the following routes into web.php file:
1 2 3 4 | use App\Http\Controllers\FileUploadController; Route::get( 'file-upload' , [FileUploadController:: class , 'index' ]); Route::post( 'store' , [FileUploadController:: class , 'store' ]); |
Step 5 – Build File Upload Controller By Artisan Command
In this step, run the following command on command prompt to create controller file:
php artisan make:controller FileUploadController
After that, go to app/http/controllers and open FileUploadController.php file. And update the following code into it:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 | <?php namespace App\Http\Controllers; use Illuminate\Http\Request; use App\Models\File; class FileUploadController extends Controller { public function index() { return view( 'file-upload' ); } public function store(Request $request ) { $validatedData = $request ->validate([ 'file' => 'required|csv,txt,xlx,xls,pdf|max:2048' , ]); $name = $request ->file( 'file' )->getClientOriginalName(); $path = $request ->file( 'file' )->store( 'public/files' ); $save = new File; $save ->name = $name ; $save ->path = $path ; return redirect( 'file-upload' )->with( 'status' , 'File Has been uploaded successfully in laravel 8' ); } } |
The following line of code will upload an file into the files directory:
1 | $path = $request->file('file')->store('public/files'); |
Step 6 – Create File Upload Form
Now, create file upload form in blade view file for display file upload form and submit to the database.
So, Go to resources/views and create file-upload.blade.php and update the following code into it:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 | <! DOCTYPE html> < html > < head > < title >Laravel 8 File Upload Example - Tutsmake.com</ title > < meta name = "csrf-token" content = "{{ csrf_token() }}" > < link rel = "stylesheet" href = "https://stackpath.bootstrapcdn.com/bootstrap/4.5.2/css/bootstrap.min.css" > </ head > < body > < div class = "container mt-4" > < h2 class = "text-center" >File Upload in Laravel 8 - Tutsmake.com</ h2 > < form method = "POST" enctype = "multipart/form-data" id = "upload-file" action = "{{ url('store') }}" > < div class = "row" > < div class = "col-md-12" > < div class = "form-group" > < input type = "file" name = "file" placeholder = "Choose file" id = "file" > @error('file') < div class = "alert alert-danger mt-1 mb-1" >{{ $message }}</ div > @enderror </ div > </ div > < div class = "col-md-12" > < button type = "submit" class = "btn btn-primary" id = "submit" >Submit</ button > </ div > </ div > </ form > </ div > </ div > </ body > </ html > |
The following below code will display the validation error message on the blade view file:
1 2 3 | @error('file') < div class = "alert alert-danger mt-1 mb-1" >{{ $message }}</ div > @enderror |
Step 7 – Create Directory inside Storage/app/public
Now, create directory name files inside storage/app/public directory. Because the following line of code will upload an file into the files directory, which is located inside storage/app/public/ directory:
$path = $request->file('file')->store('public/files');
Step 8 – Run Development Server
Last step, open command prompt and run the following command to start developement server:
php artisan serve
Then open your browser and hit the following url on it:
http://127.0.0.1:8000/file-upload
إرسال تعليق