2013-08-23 13 views
19

mój kontroler odbiera dane pocztowe. Nie pochodzi z formy wygenerowanej przez Symfony, ale z niestandardowej formy AngularJS z użyciem FormData.Jak pobrać plik bez formularza

Normalne parametry są odbierane normalnie w worku parametrów żądania, ale w jaki sposób mogę pobrać plik, który został przesłany? Czy muszę ręcznie wykonać to samo, co w przypadku formularza handleRequest?

Mój dokument jest taki sam jak cookbook article.

Więc muszę dostać UploadFile z żądania POST aby wywołać tę metodę o podmiocie dokumentu:

public function setFile(UploadedFile $file = null)

Jak odbierać upload ręcznie w Symfony 2 (bez użycia generatora formularzy w tak czy inaczej)?

Odpowiedz

37

Request ma FileBag, podobny do ParameterBag

Więc mogę pobrać plik określonego łatwo:

$data = $this->getRequest()->request->all(); 
$file = $this->getRequest()->files->get('file'); 

i używać dokument pochodzi z książki kucharskiej:

$document = new Document(); 
$document->setFile($file); 
$lead->setDocument($document); 
+0

Jak mogę ustawić zawartość worka z plikami? Używam 'https: // github.com/kriswallsmith/Buzz/blob/master/lib/Buzz/Browser.php' i muszę wysyłać żądanie POST z zestawem toreb plików. Mam fileObj w moim kodzie. Zrobiłem to za pomocą metody 'is_file()'. –

+0

możesz też odpowiedzieć na moje pytanie? Mam taki sam problem, oto moje pytanie. https://stackoverflow.com/q/44352796/1395965 – numerah

+1

'$ this-> getRequest()' wydaje się być przestarzałe od wersji 2.4 i usunięte w wersji 3.0. '$ request-> files-> get ('filename')' pracował dla mnie – Dheeraj