BizTalk: using the SFTP and FTP Send adapter to download a file.
This allows you to create an orchestration where you can choose the files you want to download, and when, on the fly. Below are details on the two operations (downloading a file and listing a directory) using a solicit response port.
Listing the Directory
In your orchestration after referencing the SFTP or FTP adapter you can set the message context properties to configure the adapter. To specify that the adapter should list the directory set the Other property to ListDirectory=true. For instance:
Message_2 = Message_1;
Message_2(nsoftware.BizTalk.SFTP.SSHUser) = "test";
Message_2(nsoftware.BizTalk.SFTP.SSHPassword) = "test";
Message_2(nsoftware.BizTalk.SFTP.SSHHost) = "server";
Message_2(nsoftware.BizTalk.SFTP.SSHAcceptServerHostKeyAcceptAny) = true;
Message_2(nsoftware.BizTalk.SFTP.RemotePath) = "temp";
Message_2(nsoftware.BizTalk.SFTP.RemoteFile) = "*.txt";
Message_2(nsoftware.BizTalk.SFTP.Other) = "ListDirectory=true";
The solicit response port will return a message with a body containing an XML formatted representation of the directory contents. For instance:
Note: The SFTP adapter returns additional CTime and ATime elements representing the CreationTime and AccessTime. CreationTime is only supported on servers that support SFTP protocol version 4 or higher. To enable the adapter to use version 4 or higher you can set the Other property to "ProtocolVersion=4".
Downloading a File
Because a solicit response port can return only one message, you can only download one file at a time with the SFTP and FTP send ports. To do this you'll need to set the DownloadSingleFile configuration setting to true. For instance:
Message_2 = Message_1;
Message_2(nsoftware.BizTalk.SFTP.SSHUser) = "test";
Message_2(nsoftware.BizTalk.SFTP.SSHPassword) = "test";
Message_2(nsoftware.BizTalk.SFTP.SSHHost) = "server";
Message_2(nsoftware.BizTalk.SFTP.SSHAcceptServerHostKeyAcceptAny) = true;
Message_2(nsoftware.BizTalk.SFTP.RemotePath) = "temp";
Message_2(nsoftware.BizTalk.SFTP.RemoteFile) = "test.txt";
Message_2(nsoftware.BizTalk.SFTP.Other) = "DownloadSingleFile=true";
Note: You can also set DeleteAfterDownload in the Other property to delete the file on the server once the download is complete. This can be done by setting one configuration setting per line in the Other property:
Message_2(nsoftware.BizTalk.SFTP.Other) = "DownloadSingleFile=true\r\nDeleteAfterDownload=true";
Note: It is also possible to download multiple files with the send adapters. To do this you can not use a solicit response port. You must use a one way send port. In that case set the Other property of the adapter to "Download=True" and "LocalFile=C:\YourDirectory" (one setting per line).
We appreciate your feedback. If you have any questions, comments, or suggestions about this article please contact our support team at support@nsoftware.com.