Salve,
sto realizzando un sistema (semplice semplice) di download di un paio di file. Nel mio controller ho una action che gestisce il recupero del file e che richiamo con un link con un parametro:
view
Yii::app()->createUrl('product/download', array('type'=>'type1'))
controller
public function actionDownload(){
if (isset($_GET['type'])){
$type = $_GET['type'];
$fileName = '';
if ($type=='type1'){
$fileName = '/dir/type1.pdf';
}else if ($type=='type2'){
$fileName = '/dir/type2.pdf';
}else{
Yii::app()->user->setFlash('error', "Error downloading pdf");
$this->redirect(Yii::app()->createUrl('product/index'));
}
if ($fileName != ''){
Yii::app()->user->setFlash('success', "Downloaded: " . basename($fileName));
Yii::app()->getRequest()->sendFile(basename($fileName), @file_get_contents($fileName), null, false);
// $this->render(Yii::app()->createUrl('product/index'));
// $this->redirect(Yii::app()->createUrl('product/index'));
}
}
Yii::app()->user->setFlash('error', "Pdf not specified");
$this->redirect(Yii::app()->createUrl('product/index'));
}
se dopo la chiamata a sendfile metto un $this->render(Yii::app()->createUrl(‘product/index’)); il browser mi ritorna un errore “file non trovato”
se invece metto un $this->redirect(Yii::app()->createUrl(‘product/index’)); la pagina refresha ma non parte il download del file.
(il refresh della pagina mi serve per mostrare i flash… c’è magari un modo più intelligente?