Скрипт загрузки PHP с реализацией mod-xsendfile

Я сейчас пользуюсь этот Скрипт загрузки PHP в длинный список больших файлов (1 ГБ +) с моего сайта, но после жалоб на испорченные загрузки я исследовал и нашел более привлекательную альтернативу: mod_xsendfile. Мой хостинг с Dreamhost, и они уже включили xsendfile в моем домене. Я протестировал его, используя этот код с сайта авторов, и он работает:

<?php
header("X-Sendfile: /home/username/website.com/test.zip");
header("Content-Type: application/octet-stream");
header("Content-Disposition: attachment; filename=test.zip");
exit;
?>

Но я хотел бы, чтобы все загрузки были в одном каталоге и ссылки на файлы, как я делаю со сценарием из медиа-подразделения:

https://website.com/download.php?file=test.zip

Я просмотрел большинство вопросов с тегом x-sendfile и не нашел ничего полезного. Я не могу написать код PHP, но знаю достаточно, чтобы настроить скрипты, чтобы они работали. Кто-нибудь знает сценарий, который может сделать это или может помочь мне?

Спасибо

0

Решение

Это можно сделать так:

<?php
$path = realpath("/home/username/website.com/" . $_GET["file"]);
if (strpos($path, "/home/username/website.com/") !== 0) {
header("Status: 404 Not Found");
die();
}
header("X-Sendfile: $path");
header("Content-Type: application/octet-stream");
header("Content-Disposition: attachment; filename=".$_GET["file"]);

Это также гарантирует, что пользователь не сможет получить файл из любого другого каталога. /home/username/website.com/например, резервная копия базы данных или что-то еще, что вы не хотите загружать.

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]