PutFile не отправляет файл из активной директории? - PullRequest
0 голосов
/ 17 октября 2011
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), functin возвращает файл ошибки, не найденный.

Так что в качестве теста я помещаю копию теста.txt в рабочем каталоге приложений uploadApp и он отправил файл на сервер.

Почему файл должен находиться в рабочем каталоге для отправки, если активный объект установлен в объекте CFtpConnection?

(Означает ли это для любого файла, который я хочу отправить изклиент, я должен скопировать его в каталог приложения?)

Спасибо.

РЕДАКТИРОВАТЬ
Похоже SetCurrentDirectory звонки FtpSetCurrentDirectory, которые

определить текущий рабочий каталог удаленного сайта

Так что для GET это имеет смысл ... есть ли альтернативная функция для PUT - для установки активного каталогалокальной машины?(К вашему сведению - Невозможно провести различие между удаленным каталогом на сервере, который тестирует на той же машине ... если тестирование на целевом объекте SetCurrentDirectory завершится неудачно, как это происходит на сервере ... Я предполагаю)

Ответы [ 2 ]

1 голос
/ 17 октября 2011

Чтобы изменить рабочий каталог на стороне клиента, вы должны вызвать Win32 :: SetCurrentDirectory .

Вам будет проще заставить этот код работать, если вы привыкнете проверять наличие ошибок при любом вызове Win32, в том числе инкапсулированном в MFC.

1 голос
/ 17 октября 2011

Похоже, вы хотели вызвать win32 API SetCurrentDirectory . Это изменит каталог local вместо каталога remote , который изменяется pConnect-> SetCurrentDirectory. Попробуйте :: SetCurrentDirectory, если вы находитесь в пространстве имен. Конечно, ваш рабочий каталог больше не будет C: \ uploadApp ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...