2013-08-23 8 views
19

il mio controller riceve i dati post. Non proviene da un modulo generato da Symfony, ma da un modulo personalizzato AngularJS che utilizza FormData.Come ottenere il caricamento del file senza un modulo

I parametri normali vengono ricevuti normalmente nel sacchetto dei parametri di richiesta, ma come si ottiene il file che viene caricato? Devo fare manualmente lo stesso del handleRequest del modulo?

Il mio documento è uguale a cookbook article.

Così ho bisogno di ottenere un UploadFile dalla richiesta post per chiamare questo metodo per l'entità documento:

public function setFile(UploadedFile $file = null)

Come posso ricevere un caricamento manuale in Symfony 2 (senza utilizzare il costruttore modulo in Comunque)?

risposta

37

Il Request ha un FileBag, simile al ParameterBag

così ho potuto ottenere il file specificato facilmente con:

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

e utilizzare il documento come è dal libro di cucina:

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

Come posso impostare il contenuto del file bag? Sto usando 'https: // github.com/kriswallsmith/Buzz/blob/master/lib/Buzz/Browser.php' e devo inviare una richiesta POST con set di file bag. Ho file Obj nel mio codice. L'ho verificato con il metodo 'is_file()'. –

+0

puoi rispondere anche alla mia domanda? Sto affrontando lo stesso problema qui è la mia domanda. https://stackoverflow.com/q/44352796/1395965 – numerah

+1

'$ this-> getRequest()' sembra essere deprecato a partire da 2.4 e rimosso in 3.0. '$ request-> files-> get ('filename')' ha funzionato per me – Dheeraj