Wenn ich den Inhalt einer Instanz von UploadedFile drucke, bekomme ich das
%Vor%Und so bekomme ich die hochgeladene Datei in den Controller. Bevor ich es verschiebe, sollte ich die Größe ändern.
%Vor%Es gibt also keinen "tmp_name", den ich für die Größenänderung des Bildes vor dem Speichern benötige.
Muss ich es direkt aus dem Array $ _FILE lesen?
$uploadedFile->getRealPath()
Symfony\Component\HttpFoundation\File\UploadedFile
erweitert Symfony\Component\HttpFoundation\File\File
, die PHPs SplFileInfo
, sodass UploadedFile
alle Methoden von SplFileInfo
erbt.
Verwenden Sie $uploadedFile->getRealPath()
für den absoluten Pfad für die Datei. Sie können auch andere Methoden wie getFilename()
oder getPathname()
verwenden. Eine vollständige Liste der verfügbaren Methoden (von SplFileInfo
) finden Sie in den Dokumenten .
Die Dateiklasse von Symfony fügt einige zusätzliche Methoden hinzu, wie move()
und getMimeType()
, und fügt die Rückwärtskompatibilität für getExtension()
hinzu (was vor PHP 5.3.6 nicht verfügbar war). UploadedFile
fügt darüber hinaus einige zusätzliche Methoden hinzu, wie zum Beispiel getClientOriginalName()
und getClientSize()
, die die gleichen Informationen liefern wie normalerweise von $_FILES['name']
und $_FILES['size']
.
Wenn Sie eine Datei mit Doctrine hochladen, werfen Sie einen Blick auf Symfony-Dokumentation Hochladen einer Datei
Wenn Sie eine Datei ohne Doctrine hochladen möchten, können Sie Folgendes versuchen:
Wenn es ein Problem beim Hochladen der Datei gab, wird move()
eine Ausnahme auslösen
AKTUALISIERT
Um den Temp-Pfad der hochgeladenen Datei zu erhalten, um die Größe des Bildes zu ändern, können Sie getPath()
function in der erwähnten Schleife verwenden
Wenn Sie fragen, warum, weil die Symfony File-Klasse erweitert SplFileInfo
ist