0

ファイルをサーバーにアップロードするためのこの簡単なコードがありますが、機能しないようで、ファイルをアップロードしません (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.  

ありがとうございました。

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

4

1 に答える 1

1

GetLastError()がFtpPutFileに対してERROR_SHARING_VIOLATION(32)を返す場合、読み取り共有を妨げる「c:\stories.txt」へのオープンハンドルがあることを意味している可能性があります。プログラムでこのファイルを開いている場合は、CreateFile呼び出しで読み取り共有を許可するか、共有を妨げるすべての開いているハンドルを閉じて、FtpPutFileがファイルを開くことができるようにする必要があります。

于 2011-03-26T22:44:58.240 に答える