2008-09-17 10 views
20

Je n'arrive pas à trouver beaucoup de documentation sur X-Sendfile ou un exemple de code pour PHP (il y a du code rails).Utiliser X-Sendfile avec Apache/PHP

Quelqu'un l'a-t-il déjà utilisé et voudrait-il donner un petit bout de code et une brève description?

Répondre

27

X-Sendfile est un en-tête HTTP, si vous voulez quelque chose comme ceci:

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

Votre serveur web, il récupère si correctement configuré. Voici quelques détails:

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

+0

J'ai suivi le tutoriel sur le lien, mais quand je télécharge le fichier avec mod-xsend, j'obtiens la taille du fichier Binary File (0 bytes) ... Qu'est-ce que je fais mal? MISE À JOUR: l'ai compris moi-même. J'avais besoin d'ajouter '#envoyer des fichiers à partir des répertoires parents '->' XSendFileAllowAbove On' dans mon fichier .htaccess, car mes téléchargements sont hors du dossier webroot. –

+3

Pour les futurs lecteurs: XSendFileAllowAbove a été déprécié; utilisez XSendFilePath – Oli

2

Si peaufinage la configuration du serveur Web n'est pas une option, tenez compte standard de PHP readfile() function. Ce ne sera pas aussi rapide que sendfiling, mais il sera plus largement compatible. Notez également que, pour ce faire, vous devez également envoyer un en-tête Content-Type à tout le moins.

+0

Veuillez noter que si vous utilisez 'readfile()', vous n'aurez aucun support pour la reprise ou le téléchargement partiel (Request-Range) ou la mise en cache du client (ie, renvoyer un '304 Not modified' si nécessaire) (ou vous besoin de gérer tout cela vous-même avec du code PHP - il devrait y avoir des extraits de code qui font exactement cela). – Ale

1

Oui, il existe un exemple de code détaillé en PHP illustrant X-Sendfile in this page. Vous devrez peut-être également consulter this parent site pour le téléchargement et l'installation. J'ai suivi le tutoriel et cela a fonctionné pour moi comme charme.