Topics   All   MacOS (Only)   Windows (Only)   Linux (Only, Not)   iOS (Only, Not)  
Components   Crossplatform Mac & Win   Server   Client   Old   Deprecated   Guides   Examples   Videos
New in version: 10.1   10.2   10.3   10.4   10.5   11.0   11.1   11.2   11.3   11.4    Statistic    FMM    Blog  

Container.ReadFile

Reads a file with the given path.

Component Version macOS Windows Linux Server iOS SDK
Container 6.4 ✅ Yes ✅ Yes ✅ Yes ✅ Yes ✅ Yes
MBS( "Container.ReadFile"; FilePath { ; mode; filename } )   More

Parameters

Parameter Description Example Flags
FilePath The native file path. Something like "/Users/cs/desktop/test.txt" on Mac and "C:\Programs\Data\test.txt" on Windows. Files without path end in the root directory on Mac. "test.txt"
mode If missing or "auto", the plugin will try to detect type by file name extension.
If filter is "container", the result is returned as a container with a FILE stream inside.
The type can be specific here like PDF, JPEG, TIFF, GIF, BMP or PSD to return as image container. Or "compressed" to return a compressed container.
"Auto" Optional
filename If result is container, this defines the file name to use. "test.txt" Optional

Result

Returns container value or error.

Description

Reads a file with the given path.
Reads the data in the file and returns as container.
See also Text.ReadTextFile for reading text files with specific encoding.

For reading simple text files, please use Text.ReadTextFile.
See also Files.ReadFile, Files.ReadJPEG, Files.ReadPDF, Files.ReadPNG, Text.ReadTextFile and RichText.ReadFile.

This function is optimized for FM 14 and newer to stream file content when using auto mode. This allows to import up to 4 GB of data in small chunks.

FileMaker may decide to create a preview when the plugin passes back the data to FileMaker. If FileMaker on macOS creates a preview for a PDF may take some time and leak memory.
This function reads the file data into memory and does not define how FileMaker stores it. This is defined by which field it is later assigned to. And the field options define whether this container value is stored internally or externally.

This function requires a native path. Use Path.FileMakerPathToNativePath to convert a FileMaker path to a native path if required. If you like to have the user choose the path, you can use FileDialog functions.
For Server be aware that server has limited permissions and may not be able to access all files on a computer.

Examples

Read image file:

MBS( "Container.ReadFile"; "/Users/cs/Pictures/test.jpg"; "auto")

Read image file with error checking:

# get native path
Set Variable [ $path ; Value: "/Users/cs/Pictures/mond.jpg" ]
#
# read file
Set Variable [ $content ; Value: MBS( "Container.ReadFile"; $path) ]
#
# check for error
If [ MBS("IsError") = 0 ]
    Set Field [ Contacts::Photo Container ; $content ]
Else
    Show Custom Dialog [ "Failed to read file." ; $content ]
End If

Save as PDF and import it to a field:

# go to layout and record before

# build a path for FileMaker
Set Variable [ $name ; Value: "test.pdf" ]
Set Variable [ $path ; Value: Get(DocumentsPath) & $name ]
Set Variable [ $NativePath ; Value: MBS( "Path.FileMakerPathToNativePath"; $path ) ]
#
# Let FileMaker save records
Save Records as PDF [ With dialog: Off ; “$path” ; Records being browsed ; Create folders: Off ]
Set Variable [ $error ; Value: Get(LastError) ]
If [ $error = 0 ]
    # Read result PDF
    Set Variable [ $PDF ; Value: MBS( "Container.ReadFile"; $NativePath) ]
    If [ MBS("ISError") = 0 ]
        # Put in container
        Set Field [ Contacts::PDF File ; $PDF ]
    Else
        Show Custom Dialog [ "Failed to read PDF document" ; $PDF ]
    End If
Else
    Show Custom Dialog [ "Failed to create PDF document" ; Get(LastExternalErrorDetail) ]
End If

Import file on Server on Windows:

MBS( "Container.ReadFile"; "C:\Programs\FileMaker Server\Data\Documents\test.pdf")

See also

Release notes

  • Version 11.3
    • Fixed a memory leak in Container.ReadFile function when used on server and FileMaker creates a PDF preview.

Example Databases

Blog Entries

FileMaker Magazin

Created 6th September 2016, last changed 15th July 2021


Container.ReadArchive - Container.ReadImage

Feedback: Report problem or ask question.




Links
MBS FileMaker Plugins

Start Chat