Granadian
Granadian

Reputation: 15

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

I am using php api for adding/editing/viewing a FileMaker database. I am using Filemaker pro 14 and FMS 14 in windows environment.

I am having an issue with adding/editing container fields. Tried the solution given in the following link: https://community.filemaker.com/thread/66165 It was success. The FM script is:

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

I don't want to add new record. I have several container fields in the layout so it's not a solution to add a record for each one, and I need to be able to modify older records' container fields.

I tried modifying the script as follows:

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 []

note: (Last) parameter is just experimental. The php script is as follows:

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

$result returns success, but the file wasn't inserted in the container field.

Somebody pointed to me that to use "Insert from URL" I have to specify a record ID. So I did the follows: modified the php script to:

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

and the FM script (addContainerData) to

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

Also the result was success BUT without inserting the file to the container field.

What am I missing? What to do to be able to add container data to new/old records?

Upvotes: 0

Views: 880

Answers (1)

SoliantMike
SoliantMike

Reputation: 371

A possible workaround is to use PHP functions to encode the file to base 64 and set that value to a text field in FileMaker. Once there, you can have auto enter or a script to take the base 64 value and decode it to a container field. This works well especially for files with smaller file sizes.

Upvotes: 1

Related Questions