2016-04-07 1 views
1

Was ich versuche, ein Bild Uploader mit Laravel setzen 5.Laravel 5: die move() Funktion nicht die Bilddatei hochgeladen speichern

Hier ist die Form.

<form action="/edit/{{$id}}" method="POST" enctype="multipart/form-data"> 
     {!! csrf_field() !!} 
     <input type="hidden" name="_token" value="<?php echo csrf_token(); ?>"> 
     <input type="hidden" name="_method" value="PUT"> 
      //There are other tags (including other input) here 
      <input type="file" name="pic" accept="image/*"> 
     <input type="submit" value="Apply Changes"> 
    </form> 

Hier ist die Controller-Funktion, die von den form oben ausgeführt werden.

public function update($id) 
{ 
    $this->model->find($id)->fill($this->request->all())->save(); 
    if ($this->request->hasFile('pic')) { 
     $file = $this->request->file('pic'); 
     $name = $file->getClientOriginalName(); 
     $file->move('assets/serviceimages/', $name); 
    } 

    return redirect('/blahblah'); 
} 

Wie Sie vielleicht bemerkt haben, diese speichert nicht die hochgeladene Datei unter dem assets/serviceimages/ Verzeichnis, das, was ich versucht habe ist.

Grundsätzlich habe ich this tutorial verfolgt, aber anscheinend vermisse ich etwas und völlig ahnungslos darüber, was es ist, auch nachdem ich einen Blick auf die API documentation hatte.

Innerhalb der if Erklärung der Controller-Funktion wurde bestätigt, dass die $file und $name hatten, was ich erwartet hatte.

Daher vermute ich, dass das Problem in der move() Funktion liegt.

Jeder kleine Ratschlag wird geschätzt, da dies das erste Mal ist, dass ich versucht habe, einen Uploader einzurichten.

+1

Ist der Pfad existiert tatsächlich und ist es, die richtigen Berechtigungen? Ihr Pfad, in dem gerade versucht wird, zu speichern, ist '/ public/assets/serviceimages /'. Abgesehen davon haben Sie die Protokolle überprüft? – Ian

Antwort

2

Berechtigungen, wenn Sie unter Linux sind. Wenn das nicht funktioniert, versuchen Sie es auf diese Weise:

$image = $request->file('pic'); 
$destinationPathImg = '/your path/images/'; 

if (!$image->move($destinationPathImg, $image->getClientOriginalName())) { 
    return 'Error saving the file.'; 
} 

Auch dieses Bedürfnis in ur hinzugefügt werden()

public function update(Request $request, $id) 
+1

Nur FYI, Sie replizieren im Grunde, was Laravel innerhalb der 'move()' Methode macht. Wenn es sich nicht bewegen kann, würde es eine Ausnahme werfen – Ian

+0

Ja, ich weiß. Ich habe diesen Code getestet und es funktioniert so, ich habe es nur kopiert, deshalb habe ich es vorgeschlagen. –