Chilkat
HOME
Android™
ASP
Visual Basic
VB.NET
C#
iOS (IPhone)
Objective-C
C++
C
MFC
Delphi
FoxPro
Java
Perl
PHP Extension
PHP ActiveX
Python
PowerShell
Ruby
SQL Server
VBScript
|
SFTP Where Did My Upload Go?This example answers a common question: "I use Chilkat SFTP to upload a file. It says it was successful, but file is not on the server. How do you change directories?" First, "SFTP" is Secure File Transfer over SSH and has *nothing* to do with FTP (the File Transfer Protocol). It is completely unrelated to FTP. Therefore, FTP concepts such as "current directory", and "binary/ascii transfer modes" don't exist in SFTP. In SFTP, you authenticate using a user account on the remote server. This could be an actual user account on the server, or a logical user account that exists in the context of the SSH server. In either case, the user account has a home directory. If you open a file on the SSH/SFTP server using only the filename and no path, then your filename will be placed in the user account's home directory. To find out the location of the home directory, call RealPath and pass "." for the directory path. It will return the absolute path of the home directory. Given that there is no "current directory" concept in SFTP, you must specify either an absolute path or relative path when opening/creating a file that is to be in a directory other than the account's home directory. A relative path is relative to the home directory.
CREATE PROCEDURE ChilkatSample AS BEGIN DECLARE @hr int DECLARE @sTmp0 nvarchar(4000) -- Important: It is helpful to send the contents of the -- sftp.LastErrorText property when requesting support. DECLARE @sftp int EXEC @hr = sp_OACreate 'Chilkat.SFtp', @sftp OUT IF @hr <> 0 BEGIN PRINT 'Failed to create ActiveX component' RETURN END -- Any string automatically begins a fully-functional 30-day trial. DECLARE @success int EXEC sp_OAMethod @sftp, 'UnlockComponent', @success OUT, 'Anything for 30-day trial' IF @success <> 1 BEGIN EXEC sp_OAGetProperty @sftp, 'LastErrorText', @sTmp0 OUT PRINT @sTmp0 RETURN END -- Set some timeouts, in milliseconds: EXEC sp_OASetProperty @sftp, 'ConnectTimeoutMs', 5000 EXEC sp_OASetProperty @sftp, 'IdleTimeoutMs', 10000 -- Connect to the SSH server. -- The standard SSH port = 22 -- The hostname may be a hostname or IP address. DECLARE @port int DECLARE @hostname nvarchar(4000) SELECT @hostname = 'www.my-ssh-server.com' SELECT @port = 22 EXEC sp_OAMethod @sftp, 'Connect', @success OUT, @hostname, @port IF @success <> 1 BEGIN EXEC sp_OAGetProperty @sftp, 'LastErrorText', @sTmp0 OUT PRINT @sTmp0 RETURN END -- Authenticate with the SSH server. Chilkat SFTP supports -- both password-based authenication as well as public-key -- authentication. This example uses password authenication. EXEC sp_OAMethod @sftp, 'AuthenticatePw', @success OUT, 'myLogin', 'myPassword' IF @success <> 1 BEGIN EXEC sp_OAGetProperty @sftp, 'LastErrorText', @sTmp0 OUT PRINT @sTmp0 RETURN END -- After authenticating, the SFTP subsystem must be initialized: EXEC sp_OAMethod @sftp, 'InitializeSftp', @success OUT IF @success <> 1 BEGIN EXEC sp_OAGetProperty @sftp, 'LastErrorText', @sTmp0 OUT PRINT @sTmp0 RETURN END -- To find the full path of our user account's home directory, -- call RealPath like this: DECLARE @absPath nvarchar(4000) EXEC sp_OAMethod @sftp, 'RealPath', @absPath OUT, '.', '' IF @absPath Is NULL BEGIN EXEC sp_OAGetProperty @sftp, 'LastErrorText', @sTmp0 OUT PRINT @sTmp0 RETURN END ELSE BEGIN PRINT @absPath END END GO |
© 2000-2010 Chilkat Software, Inc. All Rights Reserved.