FileMaker - 使用 php api 编辑容器字段并从 URL 脚本插入

FileMaker - editing container field using php api and Insert from URL script

我正在为 adding/editing/viewing FileMaker 数据库使用 php api。我在 windows 环境中使用 Filemaker pro 14 和 FMS 14。

我遇到了 adding/editing 容器字段的问题。尝试了下面link中给出的解决方案:https://community.filemaker.com/thread/66165 这是成功的。 FM脚本是:

Goto Layout[ The layout that shows your container field ]
New Record/Request
Set Variable[$url ; Value:Get(ScriptParameter)]
Insert from URL [Select, No Dialog ; database_name::ContainerField ; $url]
Exit Script

我不想添加新记录。我在布局中有多个容器字段,因此为每个容器添加一条记录不是解决方案,我需要能够修改旧记录的容器字段。

我尝试修改脚本如下:

Go to Layout ["products" (products)]
Go to Record/Request/Page [Last]
Open Record/Request
Set Variable [$url; Value: Get(ScriptParameter)]
Insert from URL [Select, No Dialog; products::brochure; $url]
Exit Script []

注意:(最后一个)参数只是实验性的。 php脚本如下:

$runscript = $fm->newPerformScriptCommand('products', 'addContainerData', 'http://link_to_uploded_file');
$result = $runscript->execute();

$result returns 成功,但文件未插入容器字段。

有人向我指出,要使用 "Insert from URL",我必须指定一个记录 ID。所以我做了以下事情: 将 php 脚本修改为:

$editCommand = $fm->newEditCommand('products', $recordID, $editedData);
$editCommand->setPreCommandScript('addContainerData', 'http://url_to_my_uploaded_file');
$result = $editCommand->execute();

和 FM 脚本 (addContainerData) 到

Set Variable [$url; Value: Get(ScriptParameter)]
Insert from URL [Select, No Dialog; products::brochure; $url]
Exit Script []

结果也是成功的,但是没有将文件插入容器字段。

我错过了什么?如何才能将容器数据添加到 new/old 记录?

一种可能的解决方法是使用 PHP 函数将文件编码为 base 64,并将该值设置为 FileMaker 中的文本字段。到达那里后,您可以使用自动输入或脚本来获取 base 64 值并将其解码为容器字段。这尤其适用于文件较小的文件。