Ich habe ein Formular, wo unter anderem ein Benutzer ein Bild hochladen würde. Ich möchte den Pfad zum Image in der Datenbank speichern und das Image im Ordner public/img/
auf dem Server speichern.Laravel 4 - Datei-Upload
Das Formular wurde geöffnet mit: {{ Form::open(['route'=>'pizzas.store', 'files'=>true]) }}
, so dass es in der Lage wäre, Dateien zu senden. Inspizieren des HTML Ich habe die Folowing:
<form method="POST" action="http://mypizza/pizzas"
accept-charset="UTF-8" enctype="multipart/form-data">
Ich kann mein Controller-POST und alle Daten aus dem Formular erhalten, wie erwartet. Die Methode, die Datei Handhabung ist wie folgt:
public function store() {
//TODO - Validation
$destinationPath = '';
$filename = '';
if (Input::hasFile('image')) {
$file = Input::file('image');
$destinationPath = '/img/';
$filename = str_random(6) . '_' . $file->getClientOriginalName();
$uploadSuccess = $file->move($destinationPath, $filename);
}
$pizza = Pizza::create(['name' => Input::get('name'),
'price' => Input::get('price'),
'ingredients' => Input::get('ingredients'),
'active' => Input::get('active'),
'path' => $destinationPath . $filename]);
if ($pizza) {
return Redirect::route('pizzas.show', $pizza->id);
}
//TODO - else
}
Wenn ich eine Datei auswählen und das Formular abschicken, alles scheint zu funktionieren, mit der Ausnahme, dass keine Datei auf dem /img
Ordner gespeichert wird. Die Datenbank registriert den Pfad und den Namen der Datei korrekt.
Lauf dd($uploadSuccess);
direkt nach dem if { ...}
Block, erhalte ich folgendes:
object(Symfony\Component\HttpFoundation\File\File)#220 (2) {
["pathName":"SplFileInfo":private]=> string(17) "/img\YZmLw7_2.jpg"
["fileName":"SplFileInfo":private]=> string(12) "YZmLw7_2.jpg" }
Was mache ich falsch?
Neben der Antwort von [Reflic], wird es notwendig sein, die 'path' auf der Datenbank wie folgt anzupassen:' 'Pfad '=>' img/'. $ filename]); ' –
Das ist richtig, ich habe das vergessen. – Reflic