Nano Hash - криптовалюты, майнинг, программирование

FineUploader onProgress не срабатывает правильно при загрузке напрямую на S3 с использованием PreSignedUrl

используя qq.s3.FineUploaderBasic для загрузки файлов с клиента непосредственно на PreSignedUrl.

файлы загружаются на S3, но событие прогресса не срабатывает правильно - срабатывает один или два раза в начале загрузки, когда последнее событие указывает, что загрузка завершена, но это не так, и на вкладке сети вы можете увидеть что файл все еще загружается.
заметно даже в файлах размером 2 МБ.

вот консоль при использовании debug:true для файла 2140K

    Received 1 files.
    Attempting to validate image.
    Attempting to draw client-side image preview.
    Attempting to determine if test.pdf can be rendered in this browser
    First pass: check type attribute of blob object.
    test.pdf is not previewable in this browser per the blob's type attr
    Not previewable
    Sending simple upload request for 0
    Submitting S3 signature request for 0
    Sending POST request for 0
    Sending upload request for 0
    // here the upload started, put console.log at the onProgress event to log loaded, total
    // 901120 2191263
    // 2191263 2191263
    // NOTE - seems like the file finishd upload but it takes it some time to finish uploading**
    s3.fine-uploader-5.10.0.js?v=2.0.3.1:252 [Fine Uploader 5.10.0] Received response status 200 with body: 
    s3.fine-uploader-5.10.0.js?v=2.0.3.1:252 [Fine Uploader 5.10.0] Simple upload request succeeded for 0
    s3.fine-uploader-5.10.0.js?v=2.0.3.1:252 [Fine Uploader 5.10.0] Submitting upload success request/notification for 0
    s3.fine-uploader-5.10.0.js?v=2.0.3.1:252 [Fine Uploader 5.10.0] Sending POST request for 0
    s3.fine-uploader-5.10.0.js?v=2.0.3.1:252 [Fine Uploader 5.10.0] Received the following response body to an upload success request for id 0: {..}
    s3.fine-uploader-5.10.0.js?v=2.0.3.1:252 [Fine Uploader 5.10.0] Upload success was acknowledged by the server.

прогресс работает нормально на демонстрационной странице
FineUploader разница в том, что в демо не используются подписанные URL
сравнил запросы/ответы и не нашел ничего другого

Вот лог для того же файла при загрузке на мой сервер с помощью qq.FineUploaderBasic:

    Received 1 files.
    Attempting to validate image.
    Attempting to draw client-side image preview.
    Attempting to determine if test.pdf can be rendered in this browser
    First pass: check type attribute of blob object.
    test.pdf is not previewable in this browser per the blob's type attr
    Not previewable
    Sending simple upload request for 0
    // 311296 2191263
    // 1032192 2191263
    // 1064960 2191263
    // 1081344 2191263
    // 1130496 2191263
    // 1245184 2191263
    // 1507328 2191263
    // 1622016 2191263
    // 1949696 2191263
    // 2191263 2191263
    // Here the progress finished when the file actually got to my server
    xhr - server response received for 0
    responseText = {..}
    Received response status 200 with body: {..}
    Simple upload request succeeded for 0

Буду рад любому направлению, как решить эту проблему, уже поместил console.log в код FineUploader в момент события прогресса и увидел, что он не поглощает события прогресса, похоже, я что-то упускаю (может быть проблема CORS ..)

У Edit была эта проблема при работе на локальном хосте, я загрузил ее в мою промежуточную среду, и индикатор выполнения работает отлично, я думаю, что Chrome и FireFox сообщают об ошибочном прогрессе, когда источником является локальный хост.


Ответы:


1

Здесь нет проблем. Скорее всего файл загружается очень быстро. Это усугубляется тем, что вы загружаете очень маленькие файлы. Ожидание в конце загрузки — это S3, либо объединяющий любые фрагменты файла, либо мы просто ждем ответа на любые запросы, которые должны произойти после отправки последнего байта.

18.07.2016
  • загрузил тот же файл на демо-страницу, и индикатор выполнения переместился, как и должен, и достиг 100%, когда запрос завершился (смотрел его на вкладке сети), в моем сценарии индикатор выполнения очень быстро перемещается до 100% (хотелось бы, чтобы у меня было такая быстрая загрузка), он просто запускает все события прогресса, а затем продолжает загрузку 18.07.2016
  • только что загрузил файл размером 11 МБ и получил тот же результат - события прогресса срабатывают в начале, достигая 100%, а затем вы очень долго ждете, пока он закончится 18.07.2016
  • Тогда это звучит так, как будто любая проблема, которую вы видите, связана с вашей средой. Возможно расширение для браузера. 18.07.2016
  • я надеюсь, потому что у меня нет идей, я думал, что это может быть ошибка/отсутствующие настройки в базовой реализации (я использую qq.s3.FineUploaderBasic ), но черт возьми отладил, как добраться до собственных событий, и все кажется быть на месте. проверил это также в FF, и я получаю то же самое, может быть, это потому, что я работаю на локальном хосте, завтра проверю его на промежуточной среде, спасибо 18.07.2016
  • Никакая логика не добавляется к событиям прогресса в оболочке пользовательского интерфейса. На самом деле, события прогресса просто передаются по мере их получения от базового транспорта XHR. 18.07.2016
  • работает в промежуточной среде, я думаю, что chrome и FireFox сообщают об ошибочном прогрессе, когда источником является локальный хост 19.07.2016
  • Новые материалы

    Кластеризация: более глубокий взгляд
    Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

    Как написать эффективное резюме
    Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

    Частный метод Python: улучшение инкапсуляции и безопасности
    Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

    Как я автоматизирую тестирование с помощью Jest
    Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

    Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
    Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

    Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
    В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

    Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
    В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..