Как можно получить доступ к изображению, хранящемуся во встроенном поле контейнера в базе данных FileMaker Pro, через PHP и передать его в собственное приложение iOS? Есть несколько ссылок на получение URL-адреса, но ничего не говорится о выводе изображения в виде закодированной строки.
Вот шаги более подробно:
Поскольку я работал только с перемещением текста между FileMaker Server и нативным приложением iOS, используя аналогичные методы, я ищу руководство по тому же самому для изображений, особенно для шага № 4.
Я не уверен, какую версию FileMaker вы используете, или если у вас есть доступ к структуре таблицы, но если у вас есть доступ и вы используете последнюю версию (версия 13 на момент написания этой статьи), вы можете создать расчет поле, которое base64 кодирует (функция Base64Encode) поле контейнера. Я считаю, что вы можете декодировать base64 в Swift.
Таким образом, вместо размещения поля контейнера в макете, к которому обращается PHP, поместите это поле вычисления в макет. Тогда все, что вам нужно сделать в PHP, это повторить строку base64, так что вы должны позаботиться о ваших шагах 3, 4 & 5 вместе.
Надеюсь, что это поможет!
В то время как статья упомянутое в комментариях — хорошее начало, общее решение состояло в том, чтобы использовать файл моста контейнера из учебника PHP API FileMaker. Я считаю, что учебные файлы (HTML-файл с папками для каждого урока) устанавливаются вместе с FileMaker Server.
Независимо от этого, во втором уроке представлен файл ContainerBridge.php, который имеет следующее содержимое (в версии, которая, очевидно, должна иметь где-то обновление):
<?php
/**
* FileMaker PHP Example
*
*
* Copyright 2006, FileMaker, Inc. All rights reserved.
* NOTE: Use of this source code is subject to the terms of the FileMaker
* Software License which accompanies the code. Your use of this source code
* signifies your agreement to such license terms and conditions. Except as
* expressly granted in the Software License, no other copyright, patent, or
* other intellectual property license or right is granted, either expressly or
* by implication, by FileMaker.
*
*/
//This is a bridge script that calls FileMaker::getContainerData with the provided url.
require_once("dbaccess.php");
if (isset($_GET['path'])){
$url = $_GET['path'];
$url = substr($url, 0, strpos($url, "?"));
$url = substr($url, strrpos($url, ".") + 1);
if($url == "jpg"){
header('Content-type: image/jpeg');
}
else if($url == "gif"){
header('Content-type: image/gif');
}
else{
header('Content-type: application/octet-stream');
}
echo $fm->getContainerData($_GET['path']);
}
?>
Идея в том, что dbaccess.php
file создает объект FileMaker и устанавливает URL, имя пользователя и пароль, чтобы $fm
объект правильно инициирован. Когда вам нужно получить доступ к данным контейнера, вы включаете этот файл ContainerBridge.php и используете его в качестве URL.
echo '<img src="ContainerBridge.php?path=' . urlencode($record->getField('Image')) . '">';