Tip of the day: Split large files into smaller chunks

Document created by monkeybreadsoftware on Aug 19, 2018
Version 1Show Document
  • View in full screen mode

If you need to ever split files with MBS FileMaker Plugin, you can do it using the BinaryFile functions like the following script shows. It opens a file for reading and copies 10 MByte chunks to new files.

 

Set Variable [ $InputPath ; Value: "/Users/cs/Desktop/tets.mp4" ]

Set Variable [ $ChunkSize ; Value: 10*1024*1024 ]

#

Set Variable [ $InputStream ; Value: MBS( "BinaryFile.Open"; $inputPath ) ]

If [ MBS("IsError") ]

  Show Custom Dialog [ "Failed to open file." ; $InputStream & ¶ & $InputPath ]

  Exit Script [ Text Result:   ]

End If

Set Variable [ $InputLength ; Value: MBS( "BinaryFile.Length"; $InputStream ) ]

Set Variable [ $InputPosition ; Value: 0 ]

Set Variable [ $Counter ; Value: 1 ]

Loop

  # Read chunk

  Set Variable [ $Chunk ; Value: MBS( "BinaryFile.ReadHex"; $InputStream; $ChunkSize ) ]

  #

  # Write Chunk

  Set Variable [ $OutputPath ; Value: $InputPath & "." & $Counter ]

  Set Variable [ $OutputStream ; Value: MBS( "BinaryFile.Create"; $OutputPath ) ]

  If [ MBS("IsError") ]

  Show Custom Dialog [ "Failed to create file." ; $InputStream & ¶ & $OutputPath ]

  Set Variable [ $r ; Value: MBS( "BinaryFile.Close"; $InputStream ) ]

  Exit Script [ Text Result:   ]

  End If

  Set Variable [ $r ; Value: MBS( "BinaryFile.WriteHex"; $OutputStream; $Chunk ) ]

  Set Variable [ $r ; Value: MBS( "BinaryFile.Close"; $OutputStream ) ]

  #

  # next

  Set Variable [ $InputPosition ; Value: $InputPosition + $ChunkSize ]

  Exit Loop If [ $InputPosition > $InputLength ]

  Set Variable [ $Counter ; Value: $Counter +1 ]

End Loop

#

# cleanup

Set Variable [ $r ; Value: MBS( "BinaryFile.Close"; $InputStream ) ]

Attachments

    Outcomes