Почему большие файлы не загружаются легко в Laravel? ⇐ Php
-
Anonymous
Почему большие файлы не загружаются легко в Laravel?
Мой файл (размер 126 МБ, .exe) вызывает у меня проблемы.
Я использую стандартный метод загрузки Laravel.
Я попробовал увеличить объем памяти, но все равно либо пишет, что у меня закончилась память, либо я загружаю файл размером 0 КБ.
В документации ничего не упоминается о больших размерах файлов.
Мой код
ini_set("memory_limit","-1"); // Пытаемся проверить, работает ли это вернуть ответ::download($full_path); Что-то я делаю не так?
-- Изменить --
Продолжу комментарий Фила Спаркса: это то, что у меня есть, и это работает. Это комбинация Phill's и некоторых из php.net. Не уверены, что там чего-то не хватает?
публичная статическая функция big_download($path, $name = null, array $headers = array()) { если (is_null($name)) $name = basename($path); // Подготавливаем заголовки $headers = array_merge(массив( 'Content-Description' => 'Передача файлов', 'Content-Type' => File::mime(File::extension($path)), 'Кодирование-передачи-контента' => 'двоичный', «Срок действия истекает» => 0, 'Cache-Control' => 'необходима повторная проверка, пост-проверка=0, предварительная проверка=0', 'Прагма' => 'публичный', 'Content-Length' => File::size($path), ), $заголовки); $response = новый ответ('', 200, $headers); $response->header('Content-Disposition', $response->disposition($name)); // Если есть сессия, мы должны сохранить ее сейчас if (Config::get('session.driver') !== '') { Сессия::сохранить(); } // Ниже приведены комментарии http://uk1.php.net/manual/en/function.fpassthru.php. session_write_close(); ob_end_clean(); $response->send_headers(); if ($file = fopen($path, 'rb')) { while(!feof($file) и (connection_status()==0)) { print(fread($file, 1024*8)); румянец(); } fclose($файл); } // Завершаем, как это сделал бы Laravel Событие::fire('laravel.done', array($response)); $response->foundation->finish(); Выход; }
Мой файл (размер 126 МБ, .exe) вызывает у меня проблемы.
Я использую стандартный метод загрузки Laravel.
Я попробовал увеличить объем памяти, но все равно либо пишет, что у меня закончилась память, либо я загружаю файл размером 0 КБ.
В документации ничего не упоминается о больших размерах файлов.
Мой код
ini_set("memory_limit","-1"); // Пытаемся проверить, работает ли это вернуть ответ::download($full_path); Что-то я делаю не так?
-- Изменить --
Продолжу комментарий Фила Спаркса: это то, что у меня есть, и это работает. Это комбинация Phill's и некоторых из php.net. Не уверены, что там чего-то не хватает?
публичная статическая функция big_download($path, $name = null, array $headers = array()) { если (is_null($name)) $name = basename($path); // Подготавливаем заголовки $headers = array_merge(массив( 'Content-Description' => 'Передача файлов', 'Content-Type' => File::mime(File::extension($path)), 'Кодирование-передачи-контента' => 'двоичный', «Срок действия истекает» => 0, 'Cache-Control' => 'необходима повторная проверка, пост-проверка=0, предварительная проверка=0', 'Прагма' => 'публичный', 'Content-Length' => File::size($path), ), $заголовки); $response = новый ответ('', 200, $headers); $response->header('Content-Disposition', $response->disposition($name)); // Если есть сессия, мы должны сохранить ее сейчас if (Config::get('session.driver') !== '') { Сессия::сохранить(); } // Ниже приведены комментарии http://uk1.php.net/manual/en/function.fpassthru.php. session_write_close(); ob_end_clean(); $response->send_headers(); if ($file = fopen($path, 'rb')) { while(!feof($file) и (connection_status()==0)) { print(fread($file, 1024*8)); румянец(); } fclose($файл); } // Завершаем, как это сделал бы Laravel Событие::fire('laravel.done', array($response)); $response->foundation->finish(); Выход; }
Мобильная версия