2017-01-01 23 views
1

Ich möchte Datei in meiner App hochladen. Dies ist die Blade-Datei.Datei mit Laravel hochladen 5.3

<form action="/fileUploader " files="true" method="post" role="form" name="file" id="chan" > 
     <input type="hidden" name="_token" value="{{ csrf_token() }}"> 
     <div class="panel panel-default"> 

      <label>Please Select a File to Upload</label> 
      <input type="image"> 
      <button type="submit" name ="Upload_File">Upload File</button> 
     </div> 
    </form> 

Dies ist mein Controller Datei

public function viewFile() 
{ 
    return View::make('/fileUploader'); 
} 

    public function showfileupload(Request $request) 
    { 
     $file = $request -> file('image'); 
     // show the file name 
     echo 'File Name : '.$file->getClientOriginalName(); 
     echo '<br>'; 

     // show file extensions 
     echo 'File Extensions : '.$file->getClientOriginalExtension(); 
     echo '<br>'; 

     // show file path 
     echo 'File Path : '.$file->getRealPath(); 
     echo '<br>'; 

     // show file size 
     echo 'File Size : '.$file->getSize(); 
     echo '<br>'; 

     // show file mime type 
     echo 'File Mime Type : '.$file->getMimeType(); 
     echo '<br>'; 

     // move uploaded File 
     $destinationPath = 'uploads'; 
     $file->move($destinationPath,$file->getClientOriginalName()); 
    } 

Dies ist die web.php Datei

Route::get('/fileUploader', '[email protected]'); 
Route::post('/fileUploader', '[email protected]'); 

Ich erhalte eine Fehlermeldung genannt FatalThrowableError in channelController.php Linie 48: Anruf zu einer Memberfunktion getClientOriginalName() auf Null.

Wie kann ich dieses Problem lösen

Antwort

1

Höchstwahrscheinlich Sie versuchen, eine Methode aufrufen - getClientOriginalName() - auf einem Objekt, das nicht existiert, es ist also null. Das jives mit der Fehlermeldung, die Sie sehen.

Ich bin mir nicht sicher warum, aber wir können anfangen, rückwärts zu arbeiten. Lassen Sie uns eine if-Anweisung mit der hasFile()-Methode verwenden, um zu verifizieren, dass eine Datei tatsächlich in der Anfrage vorhanden ist, bevor Sie versuchen, move() es.

if ($request->hasFile('image')) { 
    $file->move($destinationPath,$file->getClientOriginalName()); 
} 

Wenn Sie das oben genannte implementieren, existiert der Fehler noch?

Hier sind die Laravel 5.3 Docs on file uploads. Es kann dir weitere Ideen geben.

Wenn Sie finden, dass Benutzer Dateien veröffentlichen und hasFile() noch boolean FALSE zurückkehren, dann sollten Sie graben in der php.ini-Datei gehen und einen Blick auf die Post_max_size oder upload_max_size values zu ergreifen, um sicherzustellen, dass wir aren Blockiere große Uploads nicht.

0

VIEW

{!! Form::open(['route'=>'fileUploader', 'id'=>'chan', 'files' => true])!!} 

     <div class="panel panel-default"> 

      <label>Please Select a File to Upload</label> 
       <input type="file" name="image"> 
      <button type="submit">Upload File</button> 
     </div> 
{!! Form::close()!!} 

WEGE

Route::get('/fileUploader', '[email protected]'); 

Route::post('fileUploader', array(
    'as' => 'fileUploader', 
    'uses' => '[email protected]', 
)); 

CONTROLLER

public function showfileupload(Request $request){ 
    $file = $request -> file('image'); 
    dd($file); // This work well for me and return information about the image 
} 

kopieren und Sie! Ich hoffe, es funktioniert, lassen Sie mich wissen, Fehler und Ergebnis!

+0

Ich bekomme null Wert – sara99

+0

ok lassen Sie einen Test für Sie –

+0

Ich aktualisierte meine Antwort –