Archived Forum PostQuestion:
List file by open returns a file to retrieve.
But cannot open the file. Would think that there is some sort of major disconnect on the server.
05/13/2014 08:47:35:readDirectory:OK []
05/13/2014 08:47:35:Retrieving [first.csv]
05/13/2014 08:47:36:getFile:Error first.csv-D:\FTPDATA\ENTKSWEEP\first.csv.first []
ChilkatLog:
DownloadFileByName:
DllDate: May 6 2014
ChilkatVersion: 9.5.0.38
UnlockPrefix: XXXBSSH
Username: 2K3-GSFTP02:dbloader
Architecture: Little Endian; 32-bit
Language: Windows Perl
VerboseLogging: 0
SshVersion: SSH-2.0-OpenSSH_4.3
SftpVersion: 3
downloadFileByName:
PreserveDate: 0
fromFilePath: first.csv
toFilePath: D:\FTPDATA\ENTKSWEEP\first.csv.first
OpenRemoteFile:
sftpOpenFile:
remotePath: first.csv
access: readOnly
createDisposition: openExisting
v3Flags: 0x1
Sent FXP_OPEN
StatusResponseFromServer:
Request: FXP_OPEN
InformationReceivedFromServer:
StatusCode: 2
StatusMessage: No such file
--InformationReceivedFromServer
--StatusResponseFromServer
retryFilepath: ./first.csv
remotePath: ./first.csv
access: readOnly
createDisposition: openExisting
v3Flags: 0x1
Sent FXP_OPEN
StatusResponseFromServer:
Request: FXP_OPEN
InformationReceivedFromServer:
StatusCode: 2
StatusMessage: No such file
--InformationReceivedFromServer
--StatusResponseFromServer
--sftpOpenFile
timeToOpenMs: Elapsed time: 47 millisec
--OpenRemoteFile
totalTimeMs: Elapsed time: 47 millisec
--downloadFileByName
Failed.
--DownloadFileByName
--ChilkatLog
Please enter code and lastErrorText inside html <pre> / </pre> tags to make them readable.
The server is reporting "No such file" - are you sure the file exists at "./first.csv"?
If you pass a filename with NO directory path, then you are asking the SSH/SFTP server to open the file with that exact name located in the HOME directory of the SSH user account.
If the server responds "No such file" -- then it is NOT THERE.
If other applications seem to work, then it is because they are applications maintaining a conceptual/logical "current directory" and it MUST BE that when actually opening the file on the server, the app (such as FileZilla) is composing the full path.
Chilkat on the other hand is an API (not an application). The remote path you request is the exact path sent to the SFTP server. When you are using an application such as FileZilla, you have to be aware of the fact that your view of what is happening may not be exactly what the app is passing to the SFTP server. For example, if FileZilla says your current remote directory is "xyz" (and by the way, there is no such thing as a current remote directory -- in SFTP there is no state. You are never "in a particular directory") so.. if FileZilla says you are "in directory xyz" and you try to open "abc.txt", then FileZilla is ACTUALLY ending "xyz/abc.txt" in it's SFTP open request.
I open the folder, and get a list of files, then parse and build filename/path and try to open.
I always have these issue with mounted file systems and virtual folders.
The trick is to figure out what the path is, which I have not done.
I am also thinking that the real_path is not reporting the correct information, and therefore cannot build a path to that file.
Try using the sftp.RealPath method to get the SFTP server to tell you the real absolute path of a file. For example, you might call RealPath("test.txt","") and it might return "/home/chilkat/test.txt".
I have never thought to do what you have shown, maybe that will eliminate all the issues that I have with virtual paths.
Probably doing this in every circumenstance, will check that out.
My getfile was not right at all, got that to work.
Thanks.