Sample code for 30+ languages & platforms
DataFlex

Upload Bytes to an SFTP Server (BinData)

See more SFTP Examples

Demonstrates the Chilkat SFtp.UploadBd method, which uploads all bytes in a BinData to a remote file. The first argument is the BinData and the second is the remote file path.

Note: This example uses relative local paths, which are resolved against the application's current working directory. Absolute local paths may also be used. Supply the paths appropriate to your own environment.

Background: When the content you want to upload is already in memory — generated on the fly, decompressed, decrypted, or pulled from a database blob — UploadBd sends it directly without first writing a temporary local file. If the destination already exists it is truncated before the new bytes are written, so the result is exactly the BinData contents.

Chilkat DataFlex Downloads

DataFlex
Use ChilkatAx-win32.pkg

Procedure Test
    Boolean iSuccess
    Handle hoSftp
    Integer iPort
    String sPassword
    Variant vBd
    Handle hoBd
    String sTemp1
    Integer iTemp1

    Move False To iSuccess

    //  Demonstrates the SFtp.UploadBd method, which uploads all bytes in a BinData to a remote file.
    //  The 1st argument is the BinData and the 2nd is the remote file path.

    Get Create (RefClass(cComChilkatSFtp)) To hoSftp
    If (Not(IsComObjectCreated(hoSftp))) Begin
        Send CreateComObject of hoSftp
    End

    //  Connect, authenticate, and initialize the SFTP subsystem.
    Move 22 To iPort
    Get ComConnect Of hoSftp "sftp.example.com" iPort To iSuccess
    If (iSuccess = False) Begin
        Get ComLastErrorText Of hoSftp To sTemp1
        Showln sTemp1
        Procedure_Return
    End

    //  Normally you would not hard-code the password in source.  You should instead obtain it
    //  from an interactive prompt, environment variable, or a secrets vault.
    Move "mySshPassword" To sPassword

    Get ComAuthenticatePw Of hoSftp "mySshLogin" sPassword To iSuccess
    If (iSuccess = False) Begin
        Get ComLastErrorText Of hoSftp To sTemp1
        Showln sTemp1
        Procedure_Return
    End

    Get ComInitializeSftp Of hoSftp To iSuccess
    If (iSuccess = False) Begin
        Get ComLastErrorText Of hoSftp To sTemp1
        Showln sTemp1
        Procedure_Return
    End

    //  Put the bytes to upload into a BinData.  (Here they are loaded from a local file, but the
    //  bytes could come from anywhere.)
    Get Create (RefClass(cComChilkatBinData)) To hoBd
    If (Not(IsComObjectCreated(hoBd))) Begin
        Send CreateComObject of hoBd
    End
    Get ComLoadFile Of hoBd "qa_data/image.png" To iSuccess
    If (iSuccess = False) Begin
        Get ComLastErrorText Of hoBd To sTemp1
        Showln sTemp1
        Procedure_Return
    End

    //  Upload the bytes.  If the remote file exists, it is truncated first.
    Get pvComObject of hoBd to vBd
    Get ComUploadBd Of hoSftp vBd "subdir/image.png" To iSuccess
    If (iSuccess = False) Begin
        Get ComLastErrorText Of hoSftp To sTemp1
        Showln sTemp1
        Procedure_Return
    End

    Get ComNumBytes Of hoBd To iTemp1
    Showln "Uploaded " iTemp1 " bytes."

    Send ComDisconnect To hoSftp


End_Procedure