Как получить доступ к фотографиям из ODK Aggregate с базой данных MySQL?

Мы установили агрегат OpenDataKit (ODK) и используем базу данных MySQL. Я могу видеть данные в таблицах _PHOTO_BIN, _PHOTO_BN и PHOTO_REF - но как мне прочитать эти данные и отобразить изображение? Я вижу, что в таблице _PHOTO_BN есть поле с именем UNROOTED_FILE_PATH, которое содержит имя файла.jpg, но я не знаю, действительно ли это можно использовать для доступа к изображению?

Спасибо.

1 ответ

Решение

Этот ответ был дан на сайте группы Google ОДК

Самый простой способ получить доступ к изображениям - использовать URL-адрес ODK Aggregate для доступа к вложениям.

Таблицы базы данных структурированы таким образом, что изображения неограниченного размера могут храниться в базе данных. Если размер вашего изображения меньше 1 МБ, он сохраняется в одной записи данных, но если у вас есть большие файлы изображений (или более длинные потоковые видео), они разделяются на несколько записей большого двоичного объекта, и написание логики для их восстановления будет ошибкой. склонный.

Совокупный URL-адрес ODK, например, для формы GeoTagger на opendatakit.appspot.com, выглядит следующим образом: http: //opendatakit.appspot.com/view/binaryData? BlobKey=geo_tagger_v2%...

Если вы хотите небольшую миниатюру, укажите previewImage=true (как указано выше).

Если вы хотите загрузить его как вложение (или получить доступ к исходному имени файла), вы также можете указать as_attachment=true, и в этом случае он предоставит имя файла в том виде, в котором оно было загружено изначально.

BlobKey идентифицирует изображение. Как и во всех URL, параметры имеют URLEncoded, что делает их очень уродливыми. URLDecoded blobKey выглядит так:

geo_tagger_v2[@version=null and 
@uiVersion=null]/geotagger[@key=uuid:f6454ba6-2485-426f-8e1a-8981e463e6fe]/ Image

Это именование в стиле XPath для элемента изображения в Xform. Он идентифицирует идентификатор формы: get_tagger_v2, значения версии и uiVersion (из атрибутов элемента верхнего уровня Xform), имя элемента верхнего уровня в форме (geotagger), первичный ключ для ссылки, на которую делается ссылка (uuid:f6454ba6-2485-426f-8e1a-8981e463e6fe) и XPath в форме к изображению. В этом случае изображение (имя поля Image) находится непосредственно под элементом верхнего уровня в форме.

Если бы у вас были повторяющиеся группы, вам нужно было бы указать порядковый номер (1..n) повторяющейся группы. Таким образом, для первой повторной группы вы должны иметь:

... / repeatElement [@ порядковый =1]/Image

и для 5-го повтора вы бы указали:

... / repeatElement [@ порядковый =5]/Image

Митч

Другие вопросы по тегам