App Inventor. Загрузка изображения на фотохостинг (ImgBB.com)

В процессе разработки фоторегистратора надо было решить — как будут храниться сделанные фотографии. Одним из вариантов хранения может быть хостинг ImgBB.

Для работы с хостингом имеется API, c помощью которого можно загружать фотографии. Для App Inventor я нашел специальное расширение для этого хостинга. Расширение позволяет существенно упростить процедуру размещения и хранения фотографий.

Первым делом ставим расширение и добавляем его в ДизайнерВ свойствах надо указать ключ API хостинга ImgBB (естественно, мы должны быть там зарегистрированы и получить ключ).

Expiration — немаловажный параметр, который указывает время хранения загруженного фото (в секундах). 0 — это «навсегда»! Его можно не указывать, при загрузке фото можно указать конкретное значение.

Расширение очень простое. Последовательность действий такая: сначала кодируем файл картинки для передачи на хостинг (вызов процедуры .Encode)Тут всего один параметр — «путь». Тут могут быть трудности… Надо путь к файлу картинки знать. Например, для каталога DCIM путь будет не совсем привычный: /storage/emulated/0/DCIM

После завершения кодировки изображения произойдет вызов события .ImageReadyВот тут как раз и удобно отправить картинку на хостинг. Для этого используется вызов процедуры .UploadImage. В качестве параметров указывается КлючAPI и время хранения файла на хостинге. Подготовленное в результате кодирования изображение подставляется в параметр «изображение».

После вызова процедуры пойдет загрузка картинки на хостинг. Это не быстро. Об окончании процесса станет ясно после наступления события .ImgBBHosted.Из параметров этого события можно вынуть: адрес сохраненной на хостинге фотографии (адрес URL), адрес ссылки, по которой можно удалить картинку (deleteURL) и многое другое. В примере — адрес отправляется на другой сайт, наращивается счетчик загруженных фото, удаляется исходный файл на телефоне (зачем его хранить, если он уже загружен на хостинг).

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

Мне приложение понравилось, но жаль, что в расширение не включили передачу такого параметра как имя файла! В результате хостинг сохраняет изображение под «своим» именем, никак не связанным с передаваемым изображением…