我试图将信息附加到位于ftp服务器上的mainfile.txt
。查看完文档之后,由于wininet.h
没有任何方法可以附加FtpCommand()
需要通过命令附加附加内容,因此会显示该文档。我遇到的问题是我相信由于几乎没有任何文件,我搞砸了这个命令。如果有任何有这方面经验的人可以对它发光或指出我正确的方向,我将不胜感激。
代码:
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
指的是无效的语法,但我不确定。第二个命令有助于显示我已正确连接到服务器。
最初我的代码使用FtpPutFile(hFtpSession, L"C:\\Users\\Brandon\\Desktop\\test.txt", L"mainfile.txt", FTP_TRANSFER_TYPE_BINARY, 0)
将文件放到服务器上,但没有使用FtpCommand()
编辑:我发送的APPE C:\\Users\\Brandon\\Desktop\\test.txt mainfile.txt
命令似乎也是"工作&#34 ;;虽然它实际上没有传输我的本地文件,但它在列为C:\Users\Brandon\Desktop\test.txt mainfile.txt
的服务器上创建了空文档。现在我绝对相信我的错误来自使用APPE
命令。
答案 0 :(得分:0)
因此,APPE
指定远程文件,与 local-file 的传输无关。使用APPE
命令后,FtpCommand
会将响应写入变量,然后您需要使用InternetWriteFile
复制本地文件的内容结束。我现在唯一的问题是它给我的格式,但它现在更加可行。
代码:
HINTERNET res;
DWORD d; //make sure all bits written
CHAR * texttowrite = "test write";
FtpCommand(hFtpSession, TRUE, FTP_TRANSFER_TYPE_BINARY,
L"APPE mainfile.txt", 0, &res); //specifices where to write to
InternetWriteFile(res, texttowrite,
strlen(texttowrite), &d); //writes text to ftp response