Как скачивать большие файлы используя PHP заголовки

У меня есть "Центр загрузки файлов" для больших файлов (100 МБ - 2 ГБ).

Я использую PHP.

Моя проблема заключается в том, что при принудительной загрузке файлов с использованием php- заголовков память сервера расходуется очень много, хотя я делаю куски из файла при загрузке, то есть, когда 5 пользователей одновременно загружают большой файл, сервер перестает работать.

Как заставить пользователей скачивать большие файлы с моего сервера без проблем.

Например, если я использую header("location : path/to/files/2GB.zip");Проблема закончена. но это то, что мне не нужно, потому что мне не нужно давать пользователям прямую ссылку на файлы для безопасности.

Что такое решение?

1 ответ

Вы можете хранить файлы вне вашего веб-пути, а затем включать файлы во время загрузки, используя функцию заголовка, чтобы развернуть ее для пользователя. Это немного чрезмерно, но это работает:

$getFiles = fread($FILEHANDLE,$FILESIZE);       

header("Content-Transfer-Encoding: Binary");
header("Content-length: ".$FILESIZE."");
header("Content-type: ".$FILETYPE."");
header('Content-Disposition: attachment; filename="'.$FILENAME.'"');

echo $getFiles;

Это потребляет больше памяти, когда вы читаете файл на сервере, прежде чем передать его, но ваши загрузчики никогда не узнают, где находятся файлы. YMMV с очень большими файлами по понятным причинам.

Другие вопросы по тегам