Как скачивать большие файлы используя 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 с очень большими файлами по понятным причинам.