2008-09-17 24 views
20

Parece que no puedo encontrar mucha documentación sobre X-Sendfile o código de ejemplo para PHP (hay algunos códigos de carriles).Uso de X-Sendfile con Apache/PHP

¿Alguien lo usó antes y le importaría dar un fragmento rápido de código y una breve descripción?

Respuesta

27

X-Sendfile es una cabecera HTTP, por lo que desea algo como esto:

header("X-Sendfile: $filename"); 

Su servidor web recoge si se ha configurado correctamente. He aquí algunos detalles más:

http://www.jasny.net/articles/how-i-php-x-sendfile/

+0

Seguí el tutorial en el enlace, pero cuando descargo el archivo con mod-xsend obtengo el archivo de tamaño Binario (0 bytes) ... ¿Qué estoy haciendo mal? ACTUALIZACIÓN: lo he descubierto yo mismo. Necesitaba agregar '#enable enviando archivos desde los directorios principales' ->' XSendFileAllowAbove On' en mi archivo .htaccess, dado que mis descargas están fuera de la carpeta webroot. –

+3

Para lectores futuros: XSendFileAllowAbove ha quedado obsoleto; use XSendFilePath – Oli

2

Si ajustar la configuración del servidor web no es una opción, considere estándar readfile() function de PHP. No será tan rápido como Sendfiling, pero será más compatible. También tenga en cuenta que al hacer esto, también debe enviar un encabezado Content-Type como mínimo.

+0

Tenga en cuenta que si usa 'readfile()', no tendrá soporte para la reanudación o descargas parciales (Request-Range) o el caché del cliente (es decir, devolverá un '304 Not modified' cuando sea necesario) (o lo hará Necesito manejar todo esto usted mismo con el código PHP. Debería haber algunos fragmentos de código que hagan exactamente eso. – Ale

1

Sí, hay un código de muestra detallado en PHP que ilustra X-Sendfile in this page. Es posible que también deba consultar this parent site para descargar e instalar. Seguí el tutorial y funcionó para mí como encanto.