В процессе разработки фоторегистратора надо было решить — как будут храниться сделанные фотографии. Одним из вариантов хранения может быть хостинг ImgBB.
Для работы с хостингом имеется API, c помощью которого можно загружать фотографии. Для App Inventor я нашел специальное расширение для этого хостинга. Расширение позволяет существенно упростить процедуру размещения и хранения фотографий.
Первым делом ставим расширение и добавляем его в Дизайнер
В свойствах надо указать ключ API хостинга ImgBB (естественно, мы должны быть там зарегистрированы и получить ключ).
Expiration — немаловажный параметр, который указывает время хранения загруженного фото (в секундах). 0 — это «навсегда»! Его можно не указывать, при загрузке фото можно указать конкретное значение.
Расширение очень простое. Последовательность действий такая: сначала кодируем файл картинки для передачи на хостинг (вызов процедуры .Encode)
Тут всего один параметр — «путь». Тут могут быть трудности… Надо путь к файлу картинки знать. Например, для каталога DCIM путь будет не совсем привычный: /storage/emulated/0/DCIM
После завершения кодировки изображения произойдет вызов события .ImageReady
Вот тут как раз и удобно отправить картинку на хостинг. Для этого используется вызов процедуры .UploadImage. В качестве параметров указывается КлючAPI и время хранения файла на хостинге. Подготовленное в результате кодирования изображение подставляется в параметр «изображение».
После вызова процедуры пойдет загрузка картинки на хостинг. Это не быстро. Об окончании процесса станет ясно после наступления события .ImgBBHosted.
Из параметров этого события можно вынуть: адрес сохраненной на хостинге фотографии (адрес URL), адрес ссылки, по которой можно удалить картинку (deleteURL) и многое другое. В примере — адрес отправляется на другой сайт, наращивается счетчик загруженных фото, удаляется исходный файл на телефоне (зачем его хранить, если он уже загружен на хостинг).
При работе с расширением, возникают потребности в получении прав на доступ в интернет и к местам хранения изображений. Лучше включить необходимые права при инициализации приложения. Я этого не делал, пришлось при вызове программы отвечать на запросы о правах. В первоисточнике предлагают делать так.
Мне приложение понравилось, но жаль, что в расширение не включили передачу такого параметра как имя файла! В результате хостинг сохраняет изображение под «своим» именем, никак не связанным с передаваемым изображением…