ventana solo para navegador intenta index guardar ejecutar descargar descargan descarga codigo automaticamente archivos archivo abre php zend-framework .htaccess zend-controller

solo - php descargar archivo automaticamente



Controle el acceso a los archivos disponibles para descargar (2)

Tengo una carpeta que contiene documentos cargados que mi aplicación ZF puede escupir a los usuarios que han iniciado sesión. Quiero que puedan usar un enlace como http://server/documents/filename.pdf y descargar el archivo, pero quiero tener un controlador DocumentsController que permita que las cookies de usuario existentes verifiquen que están conectadas y tienen permiso para descargar el archivo No quiero tener que usar URL como http://server/documents/index/id/1 si no es necesario, aunque no es una opción terrible.



Puede usar X-SendFile para obtener el mejor rendimiento. Es compatible con Apache (mod_xsendfile), Lighttpd y Nginx. La solicitud se maneja primero mediante un proceso de php que coloca un encabezado especial (X-Sendfile o X-Accel-Redirect para Nginx) y cuando termina el script, el servidor web toma el control y envía el archivo como un archivo estático. Es más rápido y usa menos memoria.

Para redirigir toda la solicitud a su controlador, necesita escribir una ruta personalizada en su arranque:

protected function _initRouter() { $router = Zend_Controller_Front::getInstance()->getRouter(); $documentRoute = new Zend_Controller_Router_Route( ''document/:filename'', array( ''action'' => ''xsendfile'', ''controller'' => ''documents'' ), array( ''filename'' => ''/..+$'' ) ); $router->addRoute(''document'', $documentRoute ); return $router; }

Puede usar este asistente de acción para manejar el encabezado x-sendfile: http://www.zfsnippets.com/snippets/view/id/27 y necesita tener código para verificar si el usuario está autenticado.