Каждый сервер подключен к сети, но не к Интернету. Каждый сервер работает веб-сервер и обслуживает страницы с PHP. Пользователь подключает ноутбук к сети и переходит на домашнюю страницу одного из серверов. Появляется веб-страница, и затем пользователь переходит к форме, где он может загрузить файл с жесткого диска своего ноутбука на серверы, которые он выбрал в сети.
Я заставил это работать, посылая файлы по одному со скрытыми фреймами. Но у меня были проблемы с отправкой файлов асинхронно. Firefox работает асинхронно, выполняя глубокую копию элемента ввода в Javascript. Chrome работает асинхронно, выполняя поверхностную копию (просто передавая ссылку) элемента ввода в Javascript. Я бы предпочел не создавать код, который работает по-разному для Chrome и Firefox. Я что-то пропустил с асинхронным использованием скрытых фреймов?
Теперь я начинаю смотреть на использование FileReader и, возможно, Web Workers с FileReader. Проблема, с которой я сталкиваюсь — это проблемы кодирования Base64. Функция readDataAsURL () использует кодировку Base64. Это делает данные больше и требует времени для декодирования. Прямо сейчас моя главная проблема — больший размер. Я отправляю файл размером несколько ГБ, и файл отправляется на встроенные серверы. У сервера определенно недостаточно памяти для хранения всего файла сразу. В нем едва хватает места для одной копии окончательного файла на диске. Я думаю, что это сработало бы, если бы у меня было достаточно места как для большего файла в кодировке Base64, так и для окончательного файла на диске. Но аппаратная часть ограничена в моем случае. Будет ли использование readAsArrayBuffer () иметь те же ограничения? Сейчас я ищу простой, полный пример, который отправляет файл с readAsArrayBuffer () и сохраняет файл на диске с PHP.
Есть ли способ загрузки файлов со скрытыми фреймами и веб-работниками? Я не вижу способа заставить их работать вместе.
Я скучаю по другому методу, который будет работать?
Задача ещё не решена.
Других решений пока нет …