Upload / read files from the FTP server using X++

In the code below, we can see how files are transferred to an FTP server using X++.

Prerequisites :

FTP Address:  The address used to connect to the FTP server.  
Username:       The authorized username required for logging into the FTP server.  
Password:        The password needed to access the FTP.  
Folder paths:   The locations of folders where files can be placed or read.


    public void sendFileToFTP(System.IO.Stream  _stream)
    {
        System.Text.Encoding 		            getUTF8;
        System.Byte[] 			                bytes;
        System.Object 			                request,response,credential;
        System.Net.FtpWebRequest 	            ftpRequest;
        System.IO.Stream 		                requestStream;
        System.Net.FtpWebResponse 	            ftpResponse;
        System.IO.StreamReader 		            reader;
        System.Char[] 			                chars;
        Str1260 			                    ftpFileName =  "ftp://<Ipaddress>//INPUT/UNPROCESSED/ "+ filename ;  // folder paths
        
        try
        {
        _stream.Position = 0;
        // Encode
        reader 	= new System.IO.StreamReader(_stream);
        getUTF8 = System.Text.Encoding::get_UTF8();
        bytes 	= getUTF8.GetBytes(reader.ReadToEnd());
 
        // Creating request
        request 	= System.Net.WebRequest::Create(new System.Uri(ftpFileName));
        ftpRequest 	= request;
 
        // Creating credentials
        credential = new System.Net.NetworkCredential('UserName', 'Password');
 
        // assign parameters to reuest
        ftpRequest.set_Credentials(credential);
        ftpRequest.set_ContentLength(bytes.get_Length());
        ftpRequest.set_Method("STOR");
     
 
        // Write file to stream
        requestStream = ftpRequest.GetRequestStream();
        requestStream.Write(bytes,0,bytes.get_Length());
        requestStream.Close();
 
        // Get respose
        response = ftpRequest.GetResponse();
        ftpResponse = response;
        info('Uploded.');
        }
        catch
        {
            error("failed");
        }
    }
public static str readFileFromSFTP(FileName _fileName)
    {
        System.Object                   ftpo;
        System.Net.FtpWebRequest        request;
        System.IO.StreamReader          reader;
        System.Net.NetworkCredential    credential;
        System.Net.FtpWebResponse       response;
        Str1260                         text;
        UserId                          usernameFTP;
        Password                        password;
        Str1260                         readingPath;
 
        try
        {
            ttsbegin;
            password     = cryptoblob2str(WinAPIServer::cryptUnProtectData('password'));
            ftpo            = System.Net.WebRequest::Create(@'FolderpathtoReadFie' + @"/" + _fileName);
            request         = ftpo;
 
            credential      = new System.Net.NetworkCredential('UserName', password);
            request.set_Credentials(credential);

            response        = request.GetResponse();
            reader          = new System.IO.StreamReader(response.GetResponseStream());
            text            = reader.ReadToEnd();
            ttscommit;
        }
        catch
        {
            error("Error reading files");
        }
        return text;
   }

Keep Daxing !!

No comments:

Post a Comment