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
Publicar un comentario