February 11, 201312 yr Hi All, I just thought I'd try to give back to the community that has given so much to me by writing a little tutorial. This technique is one I developed on Macs. Mac OS X has the curl command line tool as part of the default installation. Curl is like a web swiss army knife. You can fetch files, POST data, upload to or download from FTP servers etc... so it brings a lot of functionality to the table which isn't built into FileMaker. I make use of curl through the "do shell script" AppleScript command, which in FileMaker I use through the "Perform AppleScript" script step. Here's a simple 6 line script that lets you take the contents of a container field and upload it to an FTP site. Substitute your container field in the first and fifth lines and your FTP information in the $script variable to make it functional. This script could be extended by actually having variables for the FTP credentials/location too but I've kept it simple here just to demonstrate the technique. set variable [$file_name; GetAsText(YourTable::YourContainerField)] set variable [$path_temp; Get(TemporaryPath) & $file_name] set variable [$path_unix; Middle($path_temp ; Position($path_temp ; "/" ; 1 ; 2) ; Length($path_temp))] set variable [$script; "do shell script "curl -T " & $path_unix & " ftp://USERNAME:PASSWORD@FTP_HOST/FTP_DIRECTORY/" & $file_name &"""] Export Field Contents [YourTable::YourContainerField; "$path_temp"] Perform AppleScript [$script] Enjoy!
March 15, 201312 yr This is fantastic, and so simple. It worked for me on the first try. I couldn't believe it. Thank you.
November 20, 201312 yr Author NOTE FOR FUTURE VIEWERS OF THIS THREAD: The script as-is may not work since as of FileMaker 12 GetAsText(containerField) returns more than just the filename. You may have to look for and remove additional text such as "remote:"
February 23, 201411 yr Simple - and did just what it is supposed to do! FMPro 13 allows easier extraction of the container file name, by using the GetContainerAttribute function: GetContainerAttribute ( GetContainerAttribute ( sourceField ; attributeName ) and substituting "filename" for "attributeName". Other attributes can easily be read, too, as listed here: http://help.filemaker.com/app/answers/detail/a_id/11888/~/container-field-enhancements-in-filemaker HOWEVER... I suspect that the "curl-T" command has problems with specific characters in the file name. I have found that the script just hangs if the file name contains spaces, "&", or other such non-UNIX-friendly characters. Is there a way to overcome this, and still preserve the original filename?
January 24, 20169 yr Newbies Hi I am having trouble entering line 4 in the above script. The value of $script rejects the 'do shell script' as an unrecognised table. How do we define the script in Filemaker 14 Am I missing something? Edited January 24, 20169 yr by bmcintosh46
January 24, 20169 yr Newbies On 11 February 2013 at 3:44 AM, uemtux said: "do shell script "curl -T " & $path_unix & " ftp://USERNAME:PASSWORD@FTP_HOST/FTP_DIRECTORY/" & $file_name &""" But I cannot get this text into the variable value field. Edited January 24, 20169 yr by bmcintosh46
January 24, 20169 yr I believe it needs to be: "do shell script \"curl -T " & $path_unix & " ftp://USERNAME:PASSWORD@FTP_HOST/FTP_DIRECTORY/" & $file_name & "\"" Untested.
January 24, 20169 yr Newbies Thanks Comment It took me a number of hours but I did eventually work this out. Seemed strange to me that other were excited about the script working and yet it wasn't displayed correctly. Thanks for you time
January 24, 20169 yr 2 minutes ago, bmcintosh46 said: Seemed strange to me that other were excited about the script working and yet it wasn't displayed correctly. It probably was displayed correctly back in 2013, but didn't survive all the forum up?grades since.
Create an account or sign in to comment