Обход ограничения загрузки файла

Рейтинг: 0Ответов: 2Опубликовано: 22.06.2011

Есть ли в php или другом языке возможность обхода ограничения размера загружаемого файла? Решение мне представляется таким образом: загружаемый файл бьется на части, заливается по частям, а потом склеивается. Но как это реализовать (если это вообще возможно)?

Ответы

▲ 2Принят

Решения на php нет (если только серверные расширения какие ставить). PHP стартует после обработки входящего запроса.

Могу предложить копнуть в сторону флэш-загрузчиков - он может загрузить файл "в себя" и дальше режьте как хотите на части. Ну а алгоритм элементарный - передавать что-то типа

upload.php?file=myfile.avi&part=15&hash=m342lkwkjfp

а в POST кусок файла, если кусок меньше буфера - можно собирать.

Это даже уже используется.

И даже вот сам загрузчик =)

▲ 1

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

В случае использования в качестве фронтэнда nginx, я бы предложил установить upload модуль и выставить ограничение на размер тела запроса, столько сколько вам необходимо, вплоть до максимума ФС. Тогда задачу на загрузку файла полностью возьмет на себя nginx (по сути он просто, сохранит тело запроса во временном файле), а на бэкэнд придет просто ссылка на закаченный файл.