ftpサーバーにあるmainfile.txt
に情報を追加しようとしています。ドキュメントを調べた後、wininet.h
には、コマンドを使って追加を実行する必要があることを追加する方法がありません。私が抱えている問題は、私はそれについてのドキュメントがほとんどないためにコマンドについていくと信じているということです。これを経験した経験があれば誰でもそれを照らすことができ、正しい方向に向けることができれば大いに感謝します。FtpCommandでファイルに追加するC++
コード:
HINTERNET hInternet;
HINTERNET hFtpSession;
hInternet = InternetOpen(NULL, INTERNET_OPEN_TYPE_DIRECT, NULL, NULL, 0);
hFtpSession = InternetConnect(hInternet, L"host", INTERNET_DEFAULT_FTP_PORT, L"username",
L"password", INTERNET_SERVICE_FTP, INTERNET_FLAG_PASSIVE, 0);
if (FtpCommand(hFtpSession, FALSE, FTP_TRANSFER_TYPE_ASCII,
L"APPE C:\\Users\\Brandon\\Desktop\\test.txt mainfile.txt", 0, 0))
MessageBox(NULL, L"Sucess", L"Window", NULL);
else {
PrintServerResponse();
MessageBox(NULL, L"Failed", L"Window", NULL);
}
InternetCloseHandle(hFtpSession);
InternetCloseHandle(hInternet);
私は、コマンドを送信するとAPPE C:\\Users\\Brandon\\Desktop\\test.txt mainfile.txt
私の応答がある...
Response error code: 0
Response message:
私は、コマンドを送信するとAPPEND C:\\Users\\Brandon\\Desktop\\test.txt mainfile.txt
私の応答は...
Response error code: 0
Response message: 500 APPEND not understood
です
error code: 0
は無効な構文を指していますが、わかりません。 2番目のコマンドは、サーバーに正しく接続されていることを示すのに役立ちます。
もともと私のコードは、サーバーにファイルを配置するFtpPutFile(hFtpSession, L"C:\\Users\\Brandon\\Desktop\\test.txt", L"mainfile.txt", FTP_TRANSFER_TYPE_BINARY, 0)
を使用していますが、FtpCommand()
EDITの使用を負いません:また私が送るよAPPE C:\\Users\\Brandon\\Desktop\\test.txt mainfile.txt
コマンドは「作業」していることと思われます;実際にローカルファイルを転送していない間に、サーバ上に空のドキュメントを作成しています(C:\Users\Brandon\Desktop\test.txt mainfile.txt
)。今私は間違いなく私のエラーはAPPE
コマンドの使用から来ていると確信しています。
あなた 'APPE'コマンドが不正な形式です。 FTP仕様、[RFC 959](https://tools.ietf.org/html/rfc959)を読んでください。 –
問題への私の答えには依然として不正な形式ですか?私はそれを正しく付加するようにしましたが、私がより良くできることがあるかどうかはわかりません。 – Feek
'APPE'コマンドのフォーマットは正常ですが、' InternetWriteFile() 'を呼び出す前にエラーに対する応答をチェックしていません。また、 'InternetWriteFile()'は要求されたバイト数よりも少ないバイト数しか書くことができないため、書き込みの戻り値に注意を払ってループの中にいなければなりません。また、転送終了後に 'res'ハンドルを閉じることを忘れないでください。 –