2015-02-08 1 views
0

Как можно получить доступ к изображению, хранящемуся во встроенном поле контейнера в базе данных FileMaker Pro, через PHP и повторить его в приложении для iOS? Существует несколько ссылок на получение URL-адреса, но ничего особенного в том, чтобы отражать изображение как закодированную строку.Эхо-кодированное изображение из поля контейнера с использованием FileMaker Pro & PHP

Вот шаги более подробно:

  1. IOS приложение передает RecordId к через POST в PHP-файл.
  2. PHP файл получает соответствующую запись
  3. PHP файл получает поле контейнера, содержащее изображение (как это сделано?)
  4. PHP файла кодирует изображение в виде текста (как это сделано?)
  5. PHP файла повторяет кодированное изображение
  6. Swift проект отображает изображение в UIImageView

Как я работал только с двигающимся текстом туда и обратно между FileMaker Server и родным приложением IOS, используя подобные методы, я ищу руководство по делаем одна и та же для изображений, в частности, для шага 4.

+0

Я предполагаю, что вы работаете с API-интерфейсом FileMaker PHP .. ?? С этим предположением, [этот документ] (http://help.filemaker.com/app/answers/detail/a_id/5812/~/about-publishing-the-contents-of-container-fields-on-the-web) должен предоставить вам всю необходимую вам деталь. –

ответ

0

Я не уверен, какая версия FileMaker вы используете, или если у вас есть доступ к структуре таблицы, но если у вас есть доступ, и вы используете последнюю версию (версия 13 на момент написания), вы можете создать поле вычисления, которое base64 кодирует (базовое значение) в поле контейнера. Я считаю, что вы можете декодировать base64 в Swift.

Итак, вместо размещения поля контейнера на макете, к которому обращается PHP, поместите это поле вычисления в макет. Тогда все, что вам нужно сделать в PHP, это echo строка base64, так что вам следует позаботиться о ваших шагах 3, 4 & 5 вместе.

Надеюсь, что это поможет!

0

Хотя article, упомянутый в комментариях, является хорошим началом, общим решением было использовать файл контейнера-моста из учебника PHP API FileMaker. Я считаю, что файлы учебников (файл HTML с папками для каждого урока) устанавливаются вместе с FileMaker Server.

Независимо, Урок 2 учебника представляет файл 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 создает объект FileMaker и устанавливает URL-адрес, имя пользователя и пароль, чтобы объект $fm был правильно запущен. Когда вам нужно получить доступ к данным контейнера, вы включаете этот файл ContainerBridge.php и используете его как URL-адрес.

echo '<img src="ContainerBridge.php?path=' . urlencode($record->getField('Image')) . '">';