Uploading a file with FTP from Navision

code-dynamics

Hi

I have earlier written an article about a FTP Automation. Now it is time to describe how to upload a file without the use of a Automation but with use of the standard FTP program.

The upload is done in 2 steps:

  • Build a put script
  • Use the put script to upload the file.

So how do we build a put script? Take a look here:

 cside |  copy code |? 
Char1 := 13;
char2 := 10;
PutScriptFile.CREATE(Ftpdir + '\put.scr');
//Do the Login
PutScriptFile.WRITE(Username +FORMAT(Char1) +FORMAT(char2));
PutScriptFile.SEEK(PutScriptFile.POS-1);
PutScriptFile.WRITE(FTPPassword + FORMAT(Char1) +FORMAT(char2));
PutScriptFile.SEEK(PutScriptFile.POS-1);
//change to source dir
PutScriptFile.WRITE('cd '+ftpdir+ FORMAT(Char1) +FORMAT(char2));
PutScriptFile.SEEK (PutScriptFile.POS-1);
//Change to upload dir
PutScriptFile.WRITE('lcd ' + uploaddir + FORMAT(Char1) +FORMAT(char2));
PutScriptFile.SEEK(PutScriptFile.POS-1);
//Upload the files
PutScriptFile.WRITE('mput *.*'+ FORMAT(Char1) +FORMAT(char2));
PutScriptFile.SEEK(PutScriptFile.POS-1);
//End ftp connection
PutScriptFile.WRITE('quit'+ FORMAT(Char1) +FORMAT(char2));
PutScriptFile.SEEK (PutScriptFile.POS-1);
PutScriptFile.CLOSE;

Where PutScriptFile is a File.

Now that the Put Script is ready – all we have to do is use it together with the FTP command:

 cside |  copy code |? 
//First create a temp file containing the ftp command:
Commandfile.CREATE(ftpdir + '\upload.cmd');
Commandfile.WRITE('ftp -i -s:' +'put.scr ' + "FTP Server IP");
Commandfile.CLOSE;
//Now execute the command
FileName := ftpdir + '\upload.cmd';
WaitOnReturn := TRUE;
WshShell.Run(FileName,WindowType,WaitOnReturn);

Where Commandfile is a File, and WshShell is defined as ‘Windows Script Host Object Model’.WshShell

That’s all – now you can upload a file with FTP

You can leave a response, or trackback from your own site.

One Response to “Uploading a file with FTP from Navision”

  1. Good job, very useful!

    And what if the ftp connection fails? Is there a way to handle this error?
    Bye.

Leave a Reply


five + 1 =