Использование X-Sendfile с Apache / PHP

Кажется, я не могу найти много документации по X-Sendfile или примера кода для PHP (есть код рельсов).

Кто-нибудь использовал его раньше, и не могли бы вы дать быстрый фрагмент кода и краткое описание?


person Community    schedule 17.09.2008    source источник


Ответы (2)


X-Sendfile - это HTTP-заголовок, поэтому вам нужно что-то вроде этого:

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

Ваш веб-сервер подхватывает его, если он правильно настроен. Вот еще некоторые подробности:

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

person Don Neufeld    schedule 17.09.2008
comment
Я следовал руководству по ссылке, но когда я загружаю файл с помощью mod-xsend, я получаю размер файла Binary File (0 байт) ... Что я делаю не так? ОБНОВЛЕНИЕ: разобрался сам. Мне нужно было добавить #enable sending files from parent dirs - ›XSendFileAllowAbove On в мой файл .htaccess, так как мои загрузки находятся вне папки webroot. - person Primoz Rome; 29.03.2013
comment
Для будущих читателей: XSendFileAllowAbove устарел; использовать XSendFilePath - person Oli; 12.11.2014

Если настройка конфигурации веб-сервера невозможна, рассмотрите стандартную функцию PHP readfile (). Это будет не так быстро, как отправка файлов, но с большей совместимостью. Также обратите внимание, что при этом вы также должны отправить как минимум заголовок Content-Type.

person Garrett Albright    schedule 17.09.2008
comment
Обратите внимание, что если вы используете readfile(), у вас не будет поддержки для возобновления или частичных загрузок (Request-Range) или клиентского кеширования (т. Е. Возврата 304 Not modified при необходимости) (или вам придется обрабатывать все это самостоятельно с помощью кода PHP - там должны быть какие-то фрагменты кода, которые именно это делают). - person Ale; 02.02.2016