使用FileMaker Pro& amp;来自Container Field的Echo编码图像PHP

时间:2015-02-08 20:43:02

标签: php filemaker

如何通过PHP访问存储在FileMaker Pro数据库中的嵌入式容器字段中的图像并回显到本机iOS应用程序?获得网址有几个参考,但没有具体关于将图像作为编码字符串回显。

以下是更详细的步骤:

  1. iOS应用程序将recordId传递给POST文件。
  2. PHP文件获取匹配记录
  3. PHP文件获取包含图像的容器字段(如何完成?)
  4. PHP文件将图像编码为文本(如何完成?)
  5. PHP文件回显编码图像
  6. Swift项目在UIImageView中显示图像
  7. 由于我只使用类似方法在FileMaker Server和本机iOS应用程序之间来回移动文本,我正在寻求针对图像执行相同操作的指导,特别是对于步骤#4。

2 个答案:

答案 0 :(得分:0)

虽然评论中提到的article是一个好的开始,但一般的解决方案是使用FileMaker PHP API教程中的容器桥文件。我相信教程文件(包含每课的文件夹的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')) . '">';

答案 1 :(得分:0)

我不确定您使用的是哪个版本的FileMaker,或者您是否有权访问表结构,但如果您确实有访问权限且使用的是最新版本(撰写本文时为第13版),则可以创建一个计算字段,base64编码(Base64Encode函数)容器字段。我相信你可以在Swift中解码base64。

因此,不是将容器字段放在PHP正在访问的布局上,而是将此计算字段放在布局上。然后你需要在PHP中做的就是回显base64字符串,所以这应该照顾你的步骤3,4和&amp; 5在一起。

希望有所帮助!