2017-12-17 4 views
1

Ich mache eine Website, wo Benutzer ihr eigenes Profilbild mit ihren Anmeldeinformationen wie Name, E-Mail, Passwort und DOB mit Laravel-Authentifizierung hochladen können.Bild in Laravel hochladen Registrierung

Nach php artisan make:auth tut, gibt es diese Funktion in AuthController.php:

protected function create(array $data) 
{ 
    return User::create([ 
     'name' => $data['name'], 
     'email' => $data['email'], 
     'password' => bcrypt($data['password']), 
     'dob' => $data['dob'], 
     'profile_picture' => $data['profile_picture], 
    ]); 
} 

und meine Form hier:

<form class="form-horizontal" role="form" method="POST" action="{{ url('/register') }}" enctype="multipart/form-data"> 
    {{ csrf_field() }} 

    <div class="form-group{{ $errors->has('email') ? ' has-error' : '' }}"> 
     <label for="email" class="col-md-4 control-label">E-mail Address</label> 
     <input id="email" type="email" class="form-control" name="email" value="{{ old('email') }}"> 

     @if ($errors->has('email')) 
      <span class="help-block"> 
       <strong>{{ $errors->first('email') }}</strong> 
      </span> 
     @endif 
    </div> 

    <div class="form-group{{ $errors->has('password') ? ' has-error' : '' }}"> 
     <label for="password" class="col-md-4 control-label">Password</label> 
     <input id="password" type="password" class="form-control" name="password"> 

     @if ($errors->has('password')) 
      <span class="help-block"> 
       <strong>{{ $errors->first('password') }}</strong> 
      </span> 
     @endif 
    </div> 

    <div class="form-group{{ $errors->has('password_confirmation') ? ' has-error' : '' }}"> 
     <label for="password-confirm" class="col-md-4 control-label">Confirm Password</label> 
     <input id="password-confirm" type="password" class="form-control" name="password_confirmation"> 

     @if ($errors->has('password_confirmation')) 
      <span class="help-block"> 
       <strong>{{ $errors->first('password_confirmation') }}</strong> 
      </span> 
     @endif 
    </div> 

    <div class="form-group{{ $errors->has('name') ? ' has-error' : '' }}"> 
     <label for="name" class="col-md-4 control-label">Fullname</label> 
     <input id="name" type="text" class="form-control" name="name" value="{{ old('name') }}"> 

     @if ($errors->has('name')) 
      <span class="help-block"> 
       <strong>{{ $errors->first('name') }}</strong> 
      </span> 
     @endif 
    </div> 

    <div class="form-group{{ $errors->has('dob') ? ' has-error' : '' }}"> 
     <label for="name" class="col-md-4 control-label">Date of Birth</label> 
     <input id="dateOfBirth" type="date" class="form-control" name="dob"> 

     @if ($errors->has('dob')) 
      <span class="help-block"> 
       <strong>{{ $errors->first('dob') }}</strong> 
      </span> 
     @endif 
    </div> 

    <div class="form-group{{ $errors->has('profile_picture') ? ' has-error' : '' }}"> 
     <label for="name" class="col-md-4 control-label">Profile Picture</label> 
     <input id="profilePicture" type="file" class="form-control" name="profile_picture"> 

     @if ($errors->has('profile_picture')) 
      <span class="help-block"> 
       <strong>{{ $errors->first('profile_picture') }}</strong> 
      </span> 
     @endif 
    </div> 

    <div class="form-group"> 
     <button type="submit" class="btn btn-primary"> 
      <i class="fa fa-btn fa-user"></i> Register 
     </button> 
    </div> 
</form> 

Ich mag die Image-Dateinamen mit seiner Erweiterung speichern. Aber wie mache ich das? Wie bekomme ich nur seinen Dateinamen in die Zeichenfolge, verschiebe die Bilddatei in einen öffentlichen Ordner und speichere sie in der XAMPP-Datenbank?

+0

Nur etwas heraus zu löschen. In Wirklichkeit speichern Sie das Bild nicht in DB! Sie speichern nur den "string" Pfad zu diesem Bild auf Ihrem Server! – lewis4u

+0

@ lewis4u ja! Genau das will ich! Nur der String aka der Dateiname. –

Antwort

3

Wenn Sie nur den Namen speichern möchten, und für die öffentliche Verzeichnis in profile_images Ordner laden, dann können Sie etwas tun, in protected function create

  $request = request(); 

      $profileImage = $request->file('profile_picture'); 
      $profileImageSaveAsName = time() . Auth::id() . "-profile." . 
             $profileImage->getClientOriginalExtension(); 

      $upload_path = 'profile_images/'; 
      $profile_image_url = $upload_path . $profileImageSaveAsName; 
      $success = $profileImage->move($upload_path, $profileImageSaveAsName); 


    return User::create([ 
     'name' => $data['name'], 
     'email' => $data['email'], 
     'password' => bcrypt($data['password']), 
     'dob' => $data['dob'], 
     'profile_picture' => $profile_image_url, 
    ]); 
+0

Können Sie bitte erklären, woher die Funktion request() kommt. Daten werden übergeben, um Funktion über $ Daten Variable zu erstellen, so dass ich $ request = request() nicht verstehen kann; Code. –

+0

Ich habe hier den Anforderungshelfer benutzt. Von der Laravel doc "request() Die Anfrage-Funktion gibt die aktuelle Anfrage-Instanz oder erhält ein Eingabeelement: $ request = request();" – PSA

+0

Danke, ich sah diese Funktion unter Anfrage Abschnitt, aber wie Sie erwähnt, Ich konnte es unter der Helfersektion finden –