Greifen Sie aus der UploadedFile-Klasse auf $ _FILE ['tmp_name'] zu?

8

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?

    
Carlo 01.05.2014, 13:57
quelle

2 Antworten

17

Verwende $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'] .

    
Nic Wortel 01.05.2014, 14:09
quelle
1

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:

%Vor%

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

%Vor%

Wenn Sie fragen, warum, weil die Symfony File-Klasse erweitert SplFileInfo

ist     
Javad 01.05.2014 14:35
quelle

Tags und Links