লারাভেল ফাইল আপলোড:

এই টপিকে আমরা দেখতে যাচ্ছি কিভাবে ফাইল আপলোড করতে হয়।

একটি উদাহরণের মাধ্যমে বোঝা যাক।

প্রথমত আমরা নিচের কমান্ডটি ব্যবহার করে laravel 5.8 এ প্রজেক্ট তৈরি করি।

composer create-project laravel/laravel=5.8 form -prefer-dist;

এখন আমরা 'Form' নামে একটি মডেল তৈরি করি।

মাইগ্রেশন ফাইল খুলুন (create_forms_table)

  1. <?php  
  2. use Illuminate\Support\Facades\Schema;  
  3. use Illuminate\Database\Schema\Blueprint;  
  4. use Illuminate\Database\Migrations\Migration;  
  5. class CreateFormsTable extends Migration  
  6. {  
  7.     /** 
  8.      * Run the migrations. 
  9.      * 
  10.      * @return void 
  11.      */  
  12.     public function up()  
  13.     {  
  14.         Schema::create('forms', function (Blueprint $table) {  
  15.             $table->bigIncrements('id');  
  16.             $table->string('path');  
  17.             $table->timestamps();  
  18.         });  
  19.     }  
  20.   
  21.     /** 
  22.      * Reverse the migrations. 
  23.      * 
  24.      * @return void 
  25.      */  
  26.     public function down()  
  27.     {  
  28.         Schema::dropIfExists('forms');  
  29.     }  
  30. }  

উপরের কোডটি 'forms' নামে একটি টেবিল তৈরি করে যাতে চারটি কলাম রয়েছে (id, path, created_at, update_at )

নীচের কমান্ডটি ব্যবহার করে একটি ডাটাবেসে উপরের পরিবর্তনগুলি স্থানান্তর করুন।

আমরা 'FormController' নামে একটি নিয়ামক তৈরি করি ।

এখন আমরা form.blade.php নামে একটি ভিউ পেজ তৈরি করি ।

form.blade.php

  1. <Html>  
  2. <Head>  
  3. <title> File Upload </title>  
  4. </Head>  
  5. <Body>  
  6. <form method="Post" action="{{route('forms.store')}}" enctype="multipart/form-data">  
  7. @csrf  
  8. <div><input type="file" name="image"> </div><br/>  
  9. <div><button type="submit">Upload </button></div>  
  10.   
  11. </form>  
  12. </body>  

একটি ডাটাবেসে ফাইল সংরক্ষণ করা:

এতে আমরা store() ফাংশনটি সংজ্ঞায়িত করব যেখানে আমরা একটি ডাটাবেসে ফাইল সংরক্ষণ করার কোড যোগ করি।

FormController.php

  1. <?php  
  2. namespace App\Http\Controllers;  
  3. use Illuminate\Http\Request;  
  4. use App\Form;  
  5. class FormController extends Controller  
  6. {  
  7.     /** 
  8.      * Display a listing of the resource. 
  9.      * 
  10.      * @return \Illuminate\Http\Response 
  11.      */  
  12.     public function index()  
  13.     {  
  14.         //  
  15.     }  
  16. /** 
  17.      * Show the form for creating a new resource. 
  18.      * 
  19.      * @return \Illuminate\Http\Response 
  20.      */  
  21.     public function create()  
  22.     {  
  23.         //  
  24.     }  
  25.   
  26.     /** 
  27.      * Store a newly created resource in storage. 
  28.      * 
  29.      * @param  \Illuminate\Http\Request  $request 
  30.      * @return \Illuminate\Http\Response 
  31.      */  
  32.     public function store(Request $request)  
  33.     {  
  34.         //  
  35. $data=new Form;  
  36. if($files=$request->file('image')){  
  37. $name=$files->getClientOriginalName();  
  38. $files->move('images',$name);  
  39. $data->path=$name;  
  40. }  
  41. $data->save();  
  42.     }  
  43.  /** 
  44.      * Display the specified resource. 
  45.      * 
  46.      * @param  int  $id 
  47.      * @return \Illuminate\Http\Response 
  48.      */  
  49.     public function show($id)  
  50.     {  
  51.         //  
  52.     }  
  53.   
  54.     /** 
  55.      * Show the form for editing the specified resource. 
  56.      * 
  57.      * @param  int  $id 
  58.      * @return \Illuminate\Http\Response 
  59.      */  
  60.     public function edit($id)  
  61.     {  
  62.         //  
  63.    }  
  64.   
  65.     /** 
  66.      * Update the specified resource in storage. 
  67.      * 
  68.      * @param  \Illuminate\Http\Request  $request 
  69.      * @param  int  $id 
  70.      * @return \Illuminate\Http\Response 
  71.      */  
  72.     public function update(Request $request, $id)  
  73.     {  
  74.         //  
  75.     }  
  76.   
  77.     /** 
  78.      * Remove the specified resource from storage. 
  79.      * 
  80.      * @param  int  $id 
  81.      * @return \Illuminate\Http\Response 
  82.      */  
  83.     public function destroy($id)  
  84.     {  
  85.         //  
  86.     }  
  87. }  

উপরের কোডে আমরা store() ফাংশনটি সংজ্ঞায়িত করেছি যেখানে আমরা ফাইলটিকে $name ভেরিয়েবলে সংরক্ষণ করি এবং তারপরে আমরা ফাইলটিকে ইমেজ ফোল্ডারে নিয়ে যাই। যে ফাইলটি আমরা ইমেজ ফোল্ডারে নিয়ে এসেছি সেটি $data->save() স্টেটমেন্ট ব্যবহার করে একটি ডাটাবেসে সংরক্ষিত হয় ।

এখন আমরা একটি রুট সংজ্ঞায়িত করি।

  1. Route::get('/file-upload', function () {  
  2.     return view('form');  
  3. });  

আউটপুট:

যখন আমরা Choose File বাটনে ক্লিক করি তখন আমাদের যে ফাইলটি আপলোড করতে চাই সেটি নির্বাচন করতে হবে। ধরুন আমি নীচের স্ক্রিনশটে দেখানো 'img.png' নামে ফাইলটি নির্বাচন করেছি।

উপরের স্ক্রিনশটে আমি ফাইলটি বেছে নিয়েছি (img.png) এবং তারপরে আমরা আপলোড বাটনে ক্লিক করি। আপলোড বাটনে ক্লিক করার পরে ফাইলটি নীচের স্ক্রিনশটে দেখানো ডাটাবেসে সংরক্ষিত হয়।

ডাটাবেস থেকে ডেটা পুনরুদ্ধার করা:

এই সেকশনে আমরা দেখব কিভাবে ডাটাবেস থেকে ডেটা পুনরুদ্ধার করা যায়।

প্রথমে আমরা FormController ক্লাসে index() ফাংশন সংজ্ঞায়িত করব ।

FormController.php

  1. public function index()  
  2. {  
  3.         $cruds = Crud::all();  
  4.         return view('index', compact('cruds'));  
  5.     }  

এই ধাপে আমরা <img> ট্যাগ যোগ করি।

index.blade.php

  1. @extends('layout.master')  
  2. @section('content')  
  3. @foreach($forms as $form)  
  4. <div>  
  5. <img src="./images/{{ $form->path}}">  
  6. </div>  
  7. @endforeach  

উপরের কোডে "./images/{{$form->path}}" ছবির পাথ সংজ্ঞায়িত করে অর্থাৎ ছবিটি ইমেজ ফোল্ডারে সংরক্ষিত থাকে।

এখন আমরা যে রুটটি চিত্রটি প্রদর্শন করে তা সংজ্ঞায়িত করব।

Route::get('/show','FormController@index');

আউটপুট:

উপরের ক্ষেত্রে আমরা src অ্যাট্রিবিউটের পাথ পাস করে চিত্রটি প্রদর্শন করার জন্য স্ট্যাটিক উপায় ব্যবহার করি। আমরা <img> ট্যাগে ফোল্ডারের name(images) পাস না করেও ছবিটি প্রদর্শন করতে পারি এবং এটি ফর্ম মডেলে getPathAttribute() ফাংশন সংজ্ঞায়িত করে অর্জন করা যেতে পারে।

Form.php

  1. <?php  
  2. namespace App;  
  3. use Illuminate\Database\Eloquent\Model;  
  4. class Form extends Model  
  5. {  
  6.     //  
  7. public $directory="./images/";  
  8. protected $table='forms';  
  9. public function getPathAttribute($value)  
  10. {  
  11.   return $this->directory.$value;  
  12. }  
  13. }  

index.blade.php

  1. @extends('layout.master')  
  2. @section('content')  
  3. @foreach($forms as $form)  
  4. <div>  
  5. <img src="{{ $form->path}}">  
  6. </div>  
  7. @endforeach  

আউটপুট:

আপনাদের সুবিধার্থে আমি আমার টিপস এন্ড ট্রিকসগুলি ভিডিও আকারে শেয়ার করার জন্য একটি ইউটিউব চ্যানেল তৈরি করেছি। আশা করি চ্যানেলটি Subscribe করবেন।

সৌজন্যে : বাংলাদেশের জনপ্রিয় এবং বর্তমান সময়ের বাংলা ভাষায় সকল গুরুত্বপূর্ণ বিষয়ক টিউটোরিয়াল সাইট - www.TutorialBD71.blogspot.com নিত্যনতুন বিভিন্ন বিষয়ে টিউটোরিয়াল পেতে সাইটটিতে সবসময় ভিজিট করুন।

Leave a Comment