Laravel 4 Datei-upload
Ich versuche, einige Fotos hochladen und verarbeiten diese mit dem bauen in Laravel Funktionen. Aber ich kann nicht für das Leben von mir herauszufinden, wie man dies richtig tun. Ich konnte tatsächlich etwas hochladen, aber ich habe in ein paar Probleme. Dies ist der code, den ich jetzt haben:
Wenn schaute in den Unterlagen und fand diese Funktion: $file = Input::file('photo');
ich habe verwendet diese Funktion, und was der Inhalt $file
wird, ist eine Instanz der Symfony\Component\HttpFoundation\File\UploadedFile
, die, wie in der Dokumentation erzählt Sie uns, "erweitert die PHP-SplFileInfo-Klasse und stellt eine Vielzahl von Methoden für die Interaktion mit der Datei." http://laravel.com/docs/4.2/requests#files
Dann habe ich diese Funktion Input::file('photo')->move($destinationPath);
sollte aber die Datei in den gewünschten Ordner auf dem server. Und er Tat es. Aber jetzt kommt das problem. Jetzt werden alle hochgeladenen Dateien haben einen Dateinamen wie phpgoJnLc
, und ohne eine Erweiterung.
Habe ich mir angeschaut, die Funktionen von SplFileInfo
und versuchte getExtension
was mir einen leeren string und getFilename
die gibt mir auch so etwas wie phpgoJnLc
.
Dann sah ich im internet um und fand ein paar code-von Laravel 3, wo Sie so etwas Tat:
$filename = Str::random(20) .'.'. File::extension(Input::file('photo.name'));
Aber das Ergebnis ist mir nur das Ergebnis von Str::random(20)
gefolgt von einem Punkt. Wieder, keine Datei-Erweiterung.
So, was mache ich falsch? Wie zum hochladen einer Datei mit Laravel 4?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Suchen, die im selben class-Datei sehe ich einen
getClientOriginalName()
Funktion...... die ais ssuming Sie wollen, um die original-Namen für Ihre Kunden setzt..., die gefährlich sein könnten, einige Sicherheits-checks auf, es wäre mein Rat. Immer die extensionname nur geschieht mit
->getClientOriginalExtension()
, so könnte man auch speichern nur der Teil & fügen Sie eine zufällige Zeichenfolge vor, die im zweiten argument dermove()
Funktion.Dieser arbeitete für mich, vor allem, wenn Sie möchten, ändern Sie den Namen des hochgeladenen Bildes:
Können Sie auch generieren Sie einen Namen für die Datei mit der ursprünglichen Datei-Endung, zum Beispiel so:
wenn Sie versuchen, verwenden Sie die folgende in Laravel 4:
werden Sie diese Fehlermeldung erhalten: