Created On:  08 October 2012

Problem:

Customer is using Visual COBOL for Visual Studio and needs to dynamically upload a file to an ftp site using the .NET Framework classes.  Can you provide an example of how this can be done?

Resolution:

Here is an example of uploading a file to an ftp site using Visual COBOL for Visual Studio managed code and the .NET Framework classes.

$set ilusing"System.Net"
$set ilusing"System.IO"
program-id. Program1 as "testftp.Program1".
data division.
working-storage section.
01 cFtpWebRequest type System.Net.FtpWebRequest.
01 cFtpWebResponse type System.Net.FtpWebResponse.
01 cFileInfo type FileInfo.
01 fileContents type Byte occurs any.
01 cFileStream type FileStream.
01 writer type Stream.
procedure division.

try
   set cftpWebRequest to type FtpWebRequest::Create(new type Uri("ftp://ftp.microfocus.com/testfile.txt")) as type FtpWebRequest
   set cFtpWebRequest::Method to type "System.Net.WebRequestMethods+Ftp"::"UploadFile"
   set cftpWebRequest::Proxy to null
   set cftpWebRequest::UseBinary to true
   set cftpWebRequest::Credentials to new NetworkCredential("username", "password")
   set cFileInfo to new FileInfo("c:\\temp\\testfile.txt"
   set size of fileContents to cFileInfo::Length
   set cFileStream to cFileInfo::OpenRead
   invoke cFileStream::Read(fileContents, 0, type Convert::ToInt32(cFileInfo::Length))
   set writer to cftpWebRequest::GetRequestStream
   invoke writer::Write(fileContents, 0, fileContents::Length)
   invoke writer::Close
   set cftpWebResponse to cFtpWebRequest::GetResponse as type FtpWebResponse
   display cftpWebResponse::StatusDescription
catch ex as type WebException
   display ex::Message
end-try
goback.