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

Guía rápida para uso de widget kartik para select para formulario

Cómo incluir una vista dentro de un modal

Google Plus desaparecerá el 4 de Abril de 2019

Crear fomulario HTML con checkbox sin Active Record

hostinger

ventana bienvenida