Невозможно загрузить файл на FTP-сервер, используя C ++ - PullRequest
0 голосов
/ 27 марта 2011

У меня есть этот простой код для загрузки файла на сервер, но кажется, что он не работает, не загружает файл (FtpPutFile возвращает 0).Я использую FileZilla Server, и это мой код и то, что FileZilla говорит:

void upload()
{
    hInternet = InternetOpen(NULL, INTERNET_OPEN_TYPE_DIRECT, NULL, NULL, 0);
    hFtpSession = InternetConnect(hInternet,"127.0.0.1",INTERNET_DEFAULT_FTP_PORT,"vbx","pass",INTERNET_SERVICE_FTP, 0,0 );
    FtpPutFile(hFtpSession, "c:\\stories.txt", "e:\\text.txt", FTP_TRANSFER_TYPE_BINARY, 0);
    InternetCloseHandle(hFtpSession);
    InternetCloseHandle(hInternet);
}

(000011)3/27/2011 0:01:53 AM - (not logged in) (127.0.0.1)> USER vbx
(000011)3/27/2011 0:01:53 AM - (not logged in) (127.0.0.1)> 331 Password required for vbx
(000011)3/27/2011 0:01:53 AM - (not logged in) (127.0.0.1)> PASS *******
(000011)3/27/2011 0:01:53 AM - vbx (127.0.0.1)> 230 Logged on
(000011)3/27/2011 0:01:53 AM - vbx (127.0.0.1)> disconnected.  

Спасибо.

edit: GetLastError() returns: The process cannot access the file because it is being used by another process.

1 Ответ

1 голос
/ 27 марта 2011

С GetLastError (), возвращающим ERROR_SHARING_VIOLATION (32) для FtpPutFile, это, вероятно, означает, что существует открытый дескриптор к "c: \ Stories.txt", который предотвращает совместное использование чтения. Если у вас есть этот файл, открытый в вашей программе, вам нужно будет либо разрешить совместное использование чтения в вызове CreateFile, либо закрыть все открытые дескрипторы, которые запрещают совместное использование, чтобы FtpPutFile мог открыть файл.

...