How to Create upload a file in Laravel 8 - Wallpaper Moba HD

iklan

How to Create upload a file in Laravel 8

How to upload a file in Laravel 8



With file upload, a user can import file data to the database, upload media files, etc.

In this tutorial, I show how you can upload a file and add validation in the Laravel 8 project

.

1. Controller

Create a PageController controller.

php artisan make:controller PageController

Create 2 methods –

  • index() – Load index view.
  • uploadFile() – This method is used to upload the file.

Define file validation. I set the max upload file size to 2 MB (2048 KB).

If successfully validated then assign the file name to $filename and upload location "files" to the $location variable.

Execute $file->move($location,$filename); to store the file.

Use SESSION flash to store upload status and class name.

Redirect to "/".

Completed Code

<?php

namespace App\Http\Controllers;

use Session;
use Illuminate\Http\Request;

class PageController extends Controller {

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

public function uploadFile(Request $request){

// Validation
$request->validate([
'file' => 'required|mimes:png,jpg,jpeg,csv,txt,pdf|max:2048'
]);

if($request->file('file')) {
$file = $request->file('file');
$filename = time().'_'.$file->getClientOriginalName();

// File upload location
$location = 'files';

// Upload file
$file->move($location,$filename);

Session::flash('message','Upload Successfully.');
Session::flash('alert-class', 'alert-success');
}else{
Session::flash('message','File not uploaded.');
Session::flash('alert-class', 'alert-danger');
}

return redirect('/');
}

}

2. Route

  • Open routes/web.php file.
  • Define 2 routes –
    • / – Load index view.
    • /uploadFile – This use to upload a file.

Completed Code

<?php

use Illuminate\Support\Facades\Route;
use App\Http\Controllers\PageController;

Route::get('/', [PageController::class, 'index']);
Route::post('/uploadFile', [PageController::class, 'uploadFile'])->name('uploadFile');

3. View

Create index.blade.php file in resources/views/.

Display bootstrap alert message if 'message' Session exists. Also, set alert class using 'alert-class' Session.

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

In the <form > create a file element and a submit button.

Display error in <span > if not validated.

Completed Code

<!DOCTYPE html>
<html>
<head>
<title>How to upload a file in Laravel 8</title>

<!-- Meta -->
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta charset="utf-8">

<link rel="stylesheet" type="text/css" href="https://stackpath.bootstrapcdn.com/bootstrap/4.5.2/css/bootstrap.min.css">

</head>
<body>

<div class="container">

<div class="row">

<div class="col-md-12 col-sm-12 col-xs-12">

<!-- Alert message (start) -->
@if(Session::has('message'))
<div class="alert {{ Session::get('alert-class') }}">
{{ Session::get('message') }}
</div>
@endif
<!-- Alert message (end) -->

<form action="{{route('uploadFile')}}" enctype='multipart/form-data' method="post" >
{{csrf_field()}}

<div class="form-group">
<label class="control-label col-md-3 col-sm-3 col-xs-12" for="name">File <span class="required">*</span></label>
<div class="col-md-6 col-sm-6 col-xs-12">

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

@if ($errors->has('file'))
<span class="errormsg text-danger">{{ $errors->first('file') }}</span>
@endif
</div>
</div>

<div class="form-group">
<div class="col-md-6">
<input type="submit" name="submit" value='Submit' class='btn btn-success'>
</div>
</div>

</form>

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

</body>
</html>

4. Output

View Output


5. Conclusion

Modify the validation according to your requirement in the controller. Specify upload location in $location variable.

Folder created while uploading if not exists.

If you are allowing to upload large files then make sure to check upload_max_filesize and post_max_size values in the php.ini file and update it if required.

You can view this tutorial to know jQuery AJAX file upload in Laravel 8.

0 Response to "How to Create upload a file in Laravel 8"

Post a Comment

Iklan Atas Artikel

Iklan Tengah Artikel 1

Iklan Tengah Artikel 2

Iklan Bawah Artikel