বাংলায় PHP LARAVEL FRAMEWORK পর্ব-২০: Laravel File Upload with Validation

Laravel File Upload With Validation

অধিকাংশ Web Application এ File Upload Feature টি অত্যন্ত গুরুত্বপূর্ন, User এর Profile Picture থেকে শুরু করে , যেকোনো article এ যেমন বিভিন্ন Image File Upload করা লাগে , আবার বিভিন্ন Document,image, audio এবং video কে Web এ সংরক্ষণের জন্য File Upload Feature খুবই গুরুত্বপূর্ণ। আজকে আমরা দেখবো কিভাবে Laravel দিয়ে File Upload করা যায়। চলুন শুরু করা যাক :

ধাপ-১: Upload Form এর জন্য Route, Controller এবং View File তৈরী

প্রথমে চলুন Upload Form প্রদর্শনের জন্য আমাদের UserController এ uploadFile নামে একটি Method করে ফেলি :

/** Return view to upload file */
    public function uploadFile(){
        return view('uploadfile');
    }

এবার আসুন এখন একটি view file তৈরি করি যা User কে File Upload Form প্রদর্শন করবে। resources>views ফোল্ডারে uploadfile.blade.php নামে একটি ফাইল তৈরি করুন।

@extends('layouts.app')
  
@section('content')
    <div class="container">
        <div class="row justify-content-center">
            <div class="card">
                <div class="card-header">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="/uploadfile" method="post" enctype="multipart/form-data">
                            @csrf
                            <div class="form-group">
                                <input type="file" class="form-control-file" name="fileToUpload" id="exampleInputFile" 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>
@endsection

এবার app.blade.php file এ users Menu এর পাশে Upload File নামে একটা Menu যুক্ত করুন:

<li class="nav-item"><a class="nav-link" href="{{ url('/uploadfile') }}">Upload File</a></li

এবার Route এ আপনার Upload File এর url সেট করে আসুন :

Route::get('uploadfile','UserController@uploadfile');

এখন যখন আপনি Upload File Menu তে ক্লিক করবেন, তখন আপনি নিচের ছবির মতো ফাইল আপলোড ফর্মটি দেখতে পাবেন।

Laravel File Upload Form

ধাপ-২: File Upload Process এর জন্য Route এবং Controller এ Method তৈরী

প্রথমে আপনার UserController.php তে UploadFilePost() Method টি যুক্ত করুন

/** Example of File Upload */
    public function uploadFilePost(Request $request){
        $request->validate([
            'fileToUpload' => 'required|file|max:1024',
        ]);
        $request->fileToUpload->store('logos');
        return back()->with('success','You have successfully upload image.');
    }

UploadFilePost() Method এর জন্য route set করুন:

Route::post('uploadfile','UserController@uploadFilePost');

ব্যাখ্যা:এখানে আমরা store() Method তৈরী করেছি। যেটি logos নামে storage>app ফোল্ডারে তৈরী করবে, এবং ফাইল সেখানে আপলোড করবে। store() Method এর মধ্যে যেকোনো folder specify করে দিতে পারবেন যে File টি কোথায় আপলোড হবে।

Laravel File Upload Success Message