Yii Framework Forum: Refresh Pagina Dopo Sendfile - Yii Framework Forum

Jump to content

Page 1 of 1
  • You cannot start a new topic
  • You cannot reply to this topic

Refresh Pagina Dopo Sendfile è possibile Rate Topic: -----

#1 User is offline   sonik_the_sonik 

  • Junior Member
  • Pip
  • Yii
  • Group: Members
  • Posts: 24
  • Joined: 20-April 12
  • Location:italy

Posted 07 March 2013 - 07:12 PM

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?
0

#2 User is offline   sensorario 

  • Elite Member
  • Yii
  • Group: Moderators
  • Posts: 1,987
  • Joined: 07-September 10
  • Location:Cesena (Italy)

Posted 07 March 2013 - 10:11 PM

$this->render(Yii::app()->createUrl('product/index'));


non ha senso, forse tu volevi scrivere

$this->render('product/index');

0

#3 User is offline   sonik_the_sonik 

  • Junior Member
  • Pip
  • Yii
  • Group: Members
  • Posts: 24
  • Joined: 20-April 12
  • Location:italy

Posted 08 March 2013 - 02:21 AM

View Postsensorario, on 07 March 2013 - 10:11 PM, said:

$this->render(Yii::app()->createUrl('product/index'));


non ha senso, forse tu volevi scrivere

$this->render('product/index');



Si, in effetti il render era sbagliato, grazie.

Comunque continuo ad avere i problemi che ho esposto sopra: con il redirect refresha correttamente la pagina ma non scarica il file, con il render mi da errore il browser (Errore 6 (net::ERR_FILE_NOT_FOUND): Impossibile trovare il file o la directory.).

Mi manca qualcosa nelle configurazioni di routing? La directory che contiene i file è fuori da "protected" non so se ci incastra qualcosa...
0

Share this topic:


Page 1 of 1
  • You cannot start a new topic
  • You cannot reply to this topic

1 User(s) are reading this topic
0 members, 1 guests, 0 anonymous users