Ответ 1
plupload - это библиотека javascript/php, и она довольно проста в использовании и позволяет блокировать.
Он использует HTML5.
У меня есть веб-приложение, которое допускает загрузку файлов объемом до 4 МБ. Серверная сторона script - это 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 script для сборки кусков в исходный файл. Я выпускаю код под лицензией apache здесь: http://code.google.com/p/gigaupload/ Не стесняйтесь использовать/изменять/распространять.
Попробуйте использовать bigupload
script. Это очень легко интегрировать и может загружать до 2 Гб в кусках. Размер куска настраивается.
Взгляните на протокол tus, который является протоколом на основе HTTP для возобновляемых загрузок файлов, чтобы вы могли продолжать работу, когда вы остановились, без повторной загрузки всего данных в случае каких-либо перерывов. Этот протокол также был принят vimeo с мая 2017 года.
Вы можете найти различные реализации протокола на различных языках здесь. В вашем случае вы можете использовать свой javascript-клиент с именем uppy и использовать серверную реализацию golang или php на сервере.
Как насчет использования java-апплета для загрузки и PHP для обработки.
Здесь вы можете найти пример для Jupload: http://sourceforge.net/apps/mediawiki/jupload/index.php?title=PHP_Example
Вы можете определенно написать веб-приложение, которое будет принимать блок данных (даже через POST), а затем добавить этот блок данных в файл. Мне кажется, что вам нужно какое-то приложение на стороне клиента, которое возьмет файл и разбивает его на куски, а затем отправит его на ваш веб-сервис за один кусок за раз. Тем не менее, кажется, что намного проще создать каталог sftp и позволить клиентам просто загружать файлы с использованием уже существующего клиентского приложения.
Я думаю, создаю сокеты между серверами и клиентом и отправляю данные в куски!.. программирование на низком уровне, по-видимому, является решением. Возможно, это не ставки