Получение файлов

Выбор файлов посредством нативного браузерного окна

  • Модуль File/ResourceGetter/FileSystem
  • Ответственный: Санников К.А.
  • Тестировать кросcбраузерно: да
  • Тестировать кроcсплатфрмено: да
  • Возможность автотестов: интеграционные в браузере


Возможные сценарии

  • Отмена выбора
  • Отмена выбора с последующим переоткрытием окна и выбором
  • Выбор файла
  • Множественный выбор файлов (в местах где это допустимо)
  • В местах где указан допустимый тип – выбор правильного файла
  • В местах где указан допустимый тип – сброс фильтра в окне на параметр «все файлы» и выбор файла неподходящего типа
  • Выбор файлов больших размеров
  • Выбор файлов без типов

Примечания

При попытке выбора файлов на мобильном устройстве, будет предложено прикрепление фото из галереи или камеры. Не путать такое поведение с пунктом «3. Получение фото с камеры».

Для автотестирования

Для работы модуля input[type=file] элемент будет создаваться в динамическом режиме, после пользовательского события(нажатия на кнопку). И уничтожается после получения события о выборе файлов, либо через 2 минуты после отмены выбора (это связано с различными задержками в вызове события выбора у различных браузерах на устаревших или мобильных устройствах).

Поэтому поиск элемента, для проставления в него значения необходимо осуществлять после нажатия на кнопку и в течении 2х минутного периода, по возвращениюфокуса странице.

Для облегчения поиска элемента модулю можно передать параметр element и осуществлять поиск непосредственно в нём.
Если ваши сценарии тестирования не предполагают проработку отмены выбора, то после вызова метода getFiles на странице будет только один input[type=file] элемент и колизий выбора при поиске не возникнет.
Иначе же, если не передан параметр element, необходимо перехватить клик на HTMLInputElement и в нём добавить уникальный идентификатор для инпута, по которому потом можно будет сопоставить необходимый элемент.

Для того чтобы в автотестах предотвратить открытие окна выбора, но работа модуля отработала корректно, необходимо заранее выполнить код:

HTMLInputElement.prototype.click = function() {
   if(this.type !== 'file') {
      HTMLElement.prototype.click.call(this);
   }
};

Получение файлов посредством Drag&Drop

  • Модуль SbisFile/ResourceGetter/DropArea
  • Ответственный: Санников К.А.
  • Тестировать кросcбраузерно: да
  • Тестировать кросcплатфрмено: да




Возможные сценарии для переноса

  • Обычный перенос файлов
  • Перенос файлов без типа
  • Перенос .url файлов
  • Перенос директории
  • Открытие нативного окна выбора и повторение пунктов 1-4 из открытого окна
  • Повторение пунктов 1-5, но при отпускании файлов на область отменить выбор в окне (нажать esc).

Не самый распространённый сценарий использования, но при переносе большого количества файлов мог вызвать зависание браузера.

Демонстрационный пример

Пример
Исходный код

Получение фото с веб-камеры

  • Модуль File/ResourceGetter/PhotoCam
  • Ответственный: Санников К.А.
  • Тестировать кросcбраузерно: да
  • Тестировать кроcсплатфрмено: да
  • Возможность автотестов: интеграционные в браузере


Ограничения

  1. Необходимость https подключения
  2. Необходимость разрешения пользователя на доступ к медиа-устройствам
  3. Для работы в IE необходима версия 8-10, либо же 11, в режиме совместимости с 10.

Так же должно быть разрешено использование ActiveX и пониженные настройки безопасности. Далее для IE будет выкачан 9МБ .cab файл.

Возможные сценарии

  • Браузер не поддерживает работу с медиа-устройствами
  • Нет подключенных медиа-устройств
  • Нет доступа к медиа-устройствам
  • Отмена выбора после фото
  • Отмена выбора до фото
  • Переснять фото
  • Прикрепить фото

Получение сканов

Модуль SBIS3.Plugin/Integration/ResourceGetter/Scanner
Ответственный: А.И. Есин
Возможность автотестов: из браузера нет

Примечания

Возможно получение фото через подключенное мобильное устройство.

Ограничения

Для работы необходим СБИС Плагин.

Получение файлов из буфера обмена

Модуль SBIS3.Plugin/Integration/ResourceGetter/Clipboard
Ответственный: А.И. Есин
Возможность автотестов: в браузере, при подключенном СБИС Плагин

Ограничения

Для работы необходим СБИС Плагин.

Получение через окно выбора СБИС Плагин

Модуль SBIS3.Plugin/Integration/ResourceGetter/Dialogs
Ответственный: А.И. Есин
Возможность автотестов: в браузере нет

Ограничения

Для работы необходим СБИС Плагин

Выезжающая панель выбора FileChooser

Модуль FileLoader/Chooser
Ответственный: А.А. Буданков
Возможность автотестов: интеграционные в браузере, при подключенном СБИС Плагин, либо см. пункт 1.3


Ограничения

Для работы необходим СБИС Плагин.

При недоступности СБИС Плагин, либо отсутствии модуля FileLoader/Chooser в проекте, будет использован модуль открытия нативного окна выбора (пункт 1).