pConnect->SetCurrentDirectory( "C:\\FilesToSendToServer" ); //Need this set on client, i believe currently setting on server.
CFtpFileFind finder(pConnect);
finder.FindFile( "*", INTERNET_FLAG_DONT_CACHE | INTERNET_FLAG_EXISTING_CONNECT );
finder.FindNextFile();
CString filename = finder.GetFileName(); //finds the only file in that directory - test.txt
pConnect->PutFile( filename, "C:\\FilesReceived\\FILE_SENT_FROM_CLIENT.txt", FTP_TRANSFER_TYPE_BINARY, 1 )) //filename set to test.txt correctly
在客户端上,我有一个目录FilesToSendToServer
,其中包含一个测试文件 - “test.txt”
我还在客户端上有这个应用程序的工作目录 - C\uploadApp\
上面的代码正确设置当前目录并“找到”测试文件。
但是,当PutFile
执行文件名参数设置正确(test.txt)时,功能区将返回未找到的错误文件。
因此,作为测试,我将test.txt的副本放在应用程序工作目录uploadApp
中,然后DID将该文件发送到服务器。
如果在CFtpConnection对象中设置了活动目录,为什么文件需要在工作目录中发送?
(这是否意味着我想从客户端发送的任何文件我必须将其复制到应用程序的目录中?)
谢谢。
修改
看起来像SetCurrentDirectory
来电FtpSetCurrentDirectory
确定远程站点的当前工作目录
所以对于GET来说,这是有意义的......是否有PUT的备用功能 - 设置本地机器的活动目录? (仅供参考 - 无法区分服务器上同一台机器上测试的远程目录...如果在目标上测试,SetCurrentDirectory应该会失败,因为它在服务器上查看......我假设)
答案 0 :(得分:1)
看起来你打算调用win32 API SetCurrentDirectory。这将更改本地目录,而不是pConnect-> SetCurrentDirectory更改的远程目录。如果您在命名空间中,请尝试:: SetCurrentDirectory。当然,您的工作目录将不再是C:\ uploadApp ...
答案 1 :(得分:1)
要更改客户端的工作目录,您应该可以调用Win32 ::SetCurrentDirectory。
如果你习惯在任何Win32调用上检查错误,包括那些封装在MFC中的错误,你会发现让这段代码更容易工作。