Sample code for 30+ languages & platforms
Visual FoxPro

Create an FTP Upload Plan

See more FTP Examples

Demonstrates the Chilkat Ftp2.CreatePlan method, which creates and returns a textual upload plan for a local directory. The only argument is the local directory. The object must be connected, because the plan records the current absolute remote directory together with the local source paths.

Note: The local paths are relative to the application's current working directory. Absolute paths may also be used. Supply the paths appropriate to your own environment.

Background: A plan is a saved, resumable description of an upload — the list of local files and their absolute remote destinations — computed once and executed later (or on another run) with PutPlan. Separating planning from execution suits large or unreliable transfers: the plan can be reviewed, stored, and re-run, and because it records absolute remote paths it stays correct even if the working directory later changes.

Chilkat Visual FoxPro Downloads

Visual FoxPro
LOCAL lnSuccess
LOCAL loFtp
LOCAL lcPlan
LOCAL loSbPlan

lnSuccess = 0

*  Demonstrates the Ftp2.CreatePlan method, which creates and returns a textual upload plan for a
*  local directory.  The only argument is the local directory.  The object must be connected,
*  because the plan records the current absolute remote directory.

loFtp = CreateObject('Chilkat.Ftp2')

loFtp.Hostname = "ftp.example.com"
loFtp.Username = "myFtpLogin"

*  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.
loFtp.Password = "myPassword"

lnSuccess = loFtp.Connect()
IF (lnSuccess = 0) THEN
    ? loFtp.LastErrorText
    RELEASE loFtp
    CANCEL
ENDIF

lnSuccess = loFtp.ChangeRemoteDir("public_html")
IF (lnSuccess = 0) THEN
    ? loFtp.LastErrorText
    RELEASE loFtp
    CANCEL
ENDIF

*  The plan captures which local files to upload and the absolute remote destination.  Save it so
*  the upload can be run (or resumed) later with PutPlan.
lcPlan = loFtp.CreatePlan("qa_data/site")
IF (loFtp.LastMethodSuccess = 0) THEN
    ? loFtp.LastErrorText
    RELEASE loFtp
    CANCEL
ENDIF

*  Persist the plan text for later use.
loSbPlan = CreateObject('Chilkat.StringBuilder')
loSbPlan.Append(lcPlan)
lnSuccess = loSbPlan.WriteFile("qa_output/upload_plan.txt")
IF (lnSuccess = 0) THEN
    ? loSbPlan.LastErrorText
    RELEASE loFtp
    RELEASE loSbPlan
    CANCEL
ENDIF

? "Upload plan created."

lnSuccess = loFtp.Disconnect()
IF (lnSuccess = 0) THEN
    ? loFtp.LastErrorText
    RELEASE loFtp
    RELEASE loSbPlan
    CANCEL
ENDIF

RELEASE loFtp
RELEASE loSbPlan