#ios #reactjs #firebase #file-upload #google-cloud-storage
#iOS #reactjs #firebase #загрузка файла #google-облачное хранилище
Вопрос:
Я запустил веб-приложение в Firebase с целью загрузки файлов (10-300Mo) в хранилище Google и запуска ML для содержимого.
Я использовал react-JS в качестве клиента для создания формы для загрузки файлов и использовал модуль firebase (‘firebase / storage’) для возобновляемой загрузки, как описано здесь (https://firebase.google.com/docs/storage/web/upload-files ):
var uploadTask = storageRef.child('images/' file.name).put(file, metadata);
загрузка хорошо работает в Windows 10, но на iOS (iPhone, iPad) она зависает и возвращает время ожидания ~ 5-10 минут. Это очень воспроизводимо. Время и байты, передаваемые по тайм-ауту, зависят от сети (WiFi или 4G).
Я попытался отладить функцию .put (), но не смог понять, почему после нескольких фрагментов время возобновляемой загрузки истекает на iOS, а не на Windows.
Кто-нибудь сталкивался с такой же проблемой? Есть какие-либо подсказки для отладки или решения проблемы?
Ответ №1:
Поскольку единственным отличающимся фактором, по-видимому, является устройство, на котором выполняется код, я бы сказал, что проблема заключается в коде или в ограничении устройства.
Я думаю, что лучше всего было бы проверить, происходит ли это в разных версиях devide или во всех из них.
Приветствую.
Комментарии:
1. Привет, Серджио. спасибо за ваш ответ! я провел тестирование на нескольких устройствах (2 iPhone, 1 iPad — Chrome и Safari и мой ноутбук windowd — Chrome и Edge). Время ожидания iOS истекло, но не в Windows. Я перепробовал пакеты разной длины, так что дело не в отдельном вводе HTTP, но, похоже, с момента запуска загрузки время ожидания составляет 60 секунд … вы уже видели это на своем опыте?
2. Я тоже видел тайм-аут запроса в 60 секунд. В качестве наилучшей практики рекомендуется повторить запросы с истекшим временем ожидания , а в случае возобновляемых обновлений вы можете попробовать изменить размеры блоков, как указано в этой теме на github
3. Еще раз спасибо Sergio за быстрый ответ. время ожидания истекает не при индивидуальном запросе PUT в GCS, а скорее при «основном цикле». Я выполнил тест с меньшим размером фрагмента, и это не помогло (я использовал 2Mo для ADSL — ввод занимает 20 секунд). тем не менее, первый PUT, который запускается через 60 секунд с начала полной загрузки, будет зависать и, в конечном итоге, истечет через 10 минут. в Windows этого не происходит. вчера я попробовал на iOS Firefox, Edge и DuckDuckGo, и у них такое же поведение … есть что-то фундаментальное, чего мне здесь не хватает…
4. Я не полностью осведомлен о таких ограничениях, с моей точки зрения, я вижу, что облачное хранилище может вести себя по-другому из-за этих ограничений, которые, похоже, нам не хватает, похоже, это на уровне устройства из-за ваших тестов.