Forzar descarga de archivos del servidor

Veremos como forzar la descarga de archivos desde el servidor




Sin duda es algo básico pero no había tenido oportunidad de trabajar en esto, yo que vengo de la vieja escuela de PHP al día en el que escribo este artículo la forma más sencilla de hacer esta operación es utilizando la siguiente función.


Forzar descarga de archivo del servidor


La función tiene los siguientes requisitos:

No debe enviarse nada al header antes que esta función ya que por obvias razones la descarga se hace a través del header.


$pathDescarga = "files/carpeta/archivo-ejemplo.xlsx";
 return \Yii::$app->response->sendFile( $pathDescarga );



Tambien tenemos un plus que podria servirte

Borrar el archivo tras la descarga

Esta opción funciona muy bien.



$pathDescarga = "files/carpeta/archivo-ejemplo.xlsx";
return \Yii::$app->response->sendFile( $pathDescarga )
->on(\yii\web\Response::EVENT_AFTER_SEND, function($event){                
                unlink($event->data);
}, $pathDescarga );   




Fuentes:
https://www.yiiframework.com/doc/guide/2.0/en/runtime-responses
https://www.yiiframework.com/doc/api/2.0/yii-base-component#on()-detail

Comentarios

Aprende Yii2


Lo más Visto

Tutorial de implementación de calendario de rango de fechas con Karkit en gridView

Como instalar Yii en Windows usando App Serv

hostinger

ventana bienvenida