Realizzo un controller "Download" utilizzando Symfony 2, che ha l'unico scopo di inviare intestazioni in modo da poter forzare il download di un file .csv, ma non funziona correttamente.Come forzare il download di un file .csv in Symfony 2, usando l'oggetto Response?
$response = new Response();
$response->headers->set('Content-Type', "text/csv");
$response->headers->set('Content-Disposition', 'attachment; filename="'.$fileName.'"');
$response->headers->set('Pragma', "no-cache");
$response->headers->set('Expires', "0");
$response->headers->set('Content-Transfer-Encoding', "binary");
$response->headers->set('Content-Length', filesize($fileName));
$response->prepare();
$response->sendHeaders();
$response->setContent(readfile($fileName));
$response->sendContent();
$fileName
è una stringa "info.csv"
. Queste sono le mie azioni all'interno del mio controller, non ci sono dichiarazioni di ritorno. Quando ho provato a restituire l'oggetto Response
, i contenuti del file sono stati visualizzati nel browser, non il risultato previsto.
Il problema che ho trovato è che in alcune pagine faccio ad avere il mio info.csv file
, ma in anothers tutto quello che ottiene è un messaggio:
No webpage was found for the web address: http://mywebpage.com/download
Error 6 (net::ERR_FILE_NOT_FOUND): The file or directory could not be found.
Sono completamente sicuro che il file esiste , quindi ci deve essere un'altra cosa sbagliata. Inoltre, routing.yml funziona correttamente, dal momento che ottengo il file da altre pagine che si collegano anche a quel percorso. Il log degli errori di Apache non mostra nulla a riguardo.
Qualcuno ha forzato il download di un file .csv su Symfony 2 in precedenza? In tal caso, cosa sto sbagliando?
$ tpldata è undefined –