دورة laravel للمبتدئين الدرس التاسع


فهاد الدرس التاسع من دورة laravel للمبتدئين غادي نكملو الدورة ديالنا غادي نشوفوا كيفاش نديرو ل form upload يعني نخزن الصور أولا ملفات فل projet ديالي.
فغادي نزيدو الفورم من بعد غادي نشوفوا الكود لي غادي يمكن من تحميل الملفات وتخزينها.


1- إضافة فورم التحميل

غادي نمشي ل views تما غادي نزيد ملف جديد سميه upload.blade.php فيه غادي تكون عندي الفورم لي كتمكن من تحميل الملفات وارسالها ل route upload لي غادي نزيدوه من بعد.

فالكود لي غادي تزيد فالملف هو :

                                //upload.blade.php

<!doctype html>
<html lang="{{ app()->getLocale() }}">
    <head>
        <meta charset="utf-8">
        <meta http-equiv="X-UA-Compatible" content="IE=edge">
        <meta name="viewport" content="width=device-width, initial-scale=1">

        <title>Laravel</title>
        <link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.1.3/css/bootstrap.min.css" integrity="sha384-MCw98/SFnGE8fJT3GXwEOngsV7Zt27NXFoaoApmYm81iuXoPkFOJwJ8ERdknLPMO" crossorigin="anonymous">
        <!-- Fonts -->
        <link href="https://fonts.googleapis.com/css?family=Raleway:100,600" rel="stylesheet" type="text/css">
    </head>
    <body>
        {{-- part 3 --}}
        <div class="container">
            <div class="row mt-4">
                <div class="col-md-6">
                    <h3>Ajouter une image</h3>
                    <hr>
                    @if(Session::has('success'))
                        <div class="alert alert-success">{{Session::get('success')}}</div>
                    @endif
                    {{-- part 3 --}}
                    @foreach($errors->all() as $error)
                        <div class="alert alert-danger">{{$error}}</div>
                    @endforeach
                    <form action="{{route('upload')}}" method="post" enctype="multipart/form-data">
                        {{csrf_field()}}
                        <div class="form-group">
                            <input type="file" name="file" class="form-control">
                        </div>
                        <div class="form-group">
                            <button class="btn btn-primary" type="submit">Valider</button>
                        </div>
                    </form>
                </div>
            </div>
        </div>
    </body>
</html>
                            

2- إضافة ل controller UploadFileController

فغادي تزيد controller سميه UploadFileController غادي نزيد فيه fonction سميتها :

- index لي كنسترجع بها الفورم لي هي الملف upload لي زدنا.

الكود ديال الملف UploadFileController.php هو :

                                //UploadFileController.php

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;

class UploadFileController extends Controller
{
    //
    public function index(){
        return view('upload');
    }
}
                            

3- إضافة كود التحميل ف UploadFileController

دائما ف UploadFileController.php كنزيد ل fonction uploadFile لي فيها كنسترجع الصورة أولا الملف لي عندنا فالفورم وهنا كنعرض اسم الملف بل :
- fonction getClientOriginalName.

ول extension ديالو بل :
- fonction getClientOriginalExtension.

فهادو زدناهم غير باش تعرف كيفاش تسترجع هاد المعلومات في حالة ما احتاجيتهم.

منبعد كنخزن الملف ف dossier uploads لي خصك تزيدو ف dossier public باستعمال ل fonction move لي كتاخذ اسم dossier والملف.

الكود ديال الملف UploadFileController.php بعد التعديل هو :

                                //
<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;

class UploadFileController extends Controller
{
    //
    public function index(){
        return view('upload');
    }
    public function uploadFile(Request $request){
      $file = $request->file('file');

      //afficher le nom de fichier
      echo 'Nom de fichier: '.$file->getClientOriginalName();
      echo '<br>';
   
      //afficher l'extension du fichier
      echo 'l\'extension du fichier: '.$file->getClientOriginalExtension();
      echo '<br>';
   
   
      //télécharger le fichier
      $folder = 'uploads';
      $file->move($folder,$file->getClientOriginalName());

      echo 'fichier téléchargé';
    }
}
                            

4- إضافة les routes ف web.php

فغادي تمشي للملف web.php تما غادي نزيد les routes ديالي منبعد ما نزيدهم غادي تمشي للرابط :

http://localhost/laravelProject/public/upload غادي نلقى الفورم ديالي كيف كنشوف فالصورة :


من بعد فاش غادي تاخد لملف او الصورة لي اختاريتي وتضغط على valider غادي تلقى النتيجة :

من بعد غادي تمشي ل dossier uploads لي زدتي ف public غادي تلقى الملف أو الصورة تزادت تما.

الكود لي زدتا ف web.php هو :

                                    //
Route::get('/upload','UploadFileController@index');
Route::post('/upload','UploadFileController@uploadFile')->name('upload');