Intereting Posts
Когда использовать модули в Zend Framework? Структура Yii: URL-адрес контроллера / Action и параметры Преобразование результата запроса php в json Как читать карту в веб-приложении php, написанном с использованием Boost C ++ (в общей области)? Как проверить, находится ли целое число в пределах диапазона? PHP Получить метаданные удаленного файла .mp3 (из URL) Какое регулярное выражение можно использовать для проверки числа от 0 до 255? session_start () не работает с mac Комментарий Автор Ссылка на WordPress изменить цвет кнопки на клик и оставаться таким же для остальной части времени? PHP сравнивает строки и возвращает общие значения Как отключить уведомление и предупреждение в PHP в файле .htaccess? Как остановить выполнение JavaScript, когда Ajax загружает новый контент? htmlspecialchars & ENT_QUOTES не работает? 403 при отправке сообщений в разъем facebook через API-интерфейс Unification Engine

Загрузите 1GB-файлы, используя chunking в PHP

У меня есть веб-приложение, которое поддерживает загрузку файлов объемом до 4 МБ. Сценарий на стороне сервера – PHP, а веб-сервер – NGINX. Многие пользователи просили резко увеличить этот предел, чтобы разрешить загрузку видео и т. Д.

Однако, похоже, нет простого решения этой проблемы с PHP. Во-первых, на стороне клиента я ищу что-то, что позволило бы мне порвать файлы во время передачи. SWFUpload, похоже, не делает этого. Наверное, я могу передавать потоки с помощью Java FX ( http://blogs.oracle.com/rakeshmenonp/entry/javafx_upload_file ), но я не могу найти эквивалент request.getInputStream в PHP.

Увеличение ограничений браузера client_post или загрузки php.ini или max_execution раз на самом деле не является решением для действительно больших файлов (~ 1 ГБ), потому что, возможно, браузер отключится и подумает обо всех этих блоках, хранящихся в памяти.

Есть ли способ решить эту проблему с помощью PHP на стороне сервера? Буду признателен за ваши ответы.

plupload – это библиотека javascript / php, и она довольно проста в использовании и позволяет блокировать.

Однако он использует HTML5.

«но я не могу найти эквивалент request.getInputStream в PHP».

fopen('php://input'); возможно?

Я создал клиент JavaFX для отправки больших файлов в кусках максимального размера сообщения (я использую 2 МБ) и скрипта получателя PHP для сборки кусков в исходный файл. Я освобождаю код под лицензией apache здесь: http://code.google.com/p/gigaupload/ Не стесняйтесь использовать / изменять / распространять.

Попробуйте использовать скрипт bigupload . Это очень легко интегрировать и может загружать до 2 Гб в кусках. Размер куска настраивается.

Как насчет использования java-апплета для загрузки и PHP для обработки.

Здесь вы можете найти пример для Jupload: http://sourceforge.net/apps/mediawiki/jupload/index.php?title=PHP_Example

Вы можете определенно написать веб-приложение, которое будет принимать блок данных (даже через POST), а затем добавить этот блок данных в файл. Мне кажется, что вам нужно какое-то приложение на стороне клиента, которое возьмет файл и разбивает его на куски, а затем отправит его на ваш веб-сервис за один кусок за раз. Тем не менее, кажется, что намного проще создать каталог sftp и позволить клиентам просто загружать файлы с использованием уже существующего клиентского приложения.

Я думаю, создаю сокеты между серверами и клиентом и отправляю данные в куски! .. программирование на низком уровне, по-видимому, является решением .. возможно, не ставки