У меня есть веб-приложение, которое поддерживает загрузку файлов объемом до 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 и позволить клиентам просто загружать файлы с использованием уже существующего клиентского приложения.
Я думаю, создаю сокеты между серверами и клиентом и отправляю данные в куски! .. программирование на низком уровне, по-видимому, является решением .. возможно, не ставки