让我更详细地解释一下。我正在尝试编写一个从远程FTP服务器下载文件的程序,在它的末尾附加一行,然后重新上传它。文件操作工作,文本被附加到文件并重新上传,但是当我再次下载文件时,没有附加文本。我写了一个小测试程序来证明这一点;这是Pastebin的代码:
程序在初始运行和后续运行::
上打印以下输出Remote URL: ftp://orangesquirrels.com
Got data.
Local data file size: 678 bytes.
Current position in file: 678
Uploading database file back to server...
Local data file size: 690 bytes.
Remote URL is ftp://orangesquirrels.com !
*** We read 690 bytes from file.
如果程序有效,后续运行的输出应为:
Remote URL: ftp://orangesquirrels.com
Got data.
Local data file size: 690 bytes.
Current position in file: 690
Uploading database file back to server...
Local data file size: 702 bytes.
Remote URL is ftp://orangesquirrels.com !
*** We read 702 bytes from file.
因为数据被写入文件并重新上传(我知道这是因为上传的文件比下载的文件更大)我假设上传工作;我怀疑问题在于下载过程和/或curl_database_write
功能。我一直在做一切人道的事情,找出为什么会发生这种情况,但无济于事。如果有人知道任何关于为什么这不起作用,我很想知道。我有报酬写这个程序,我知道我必须尽快找到解决方案......
答案 0 :(得分:0)
您在download() - 函数中没有使用“short_database”或“file_to_write”。所以你从ftp-server而不是musiclist.txt下载/tmp/musiclist.txt。
你应该检查你的定义,当你使用一个define,当你使用一个stringvariable和你使用参数时
#define DATABASE_FILE "/tmp/musiclist.txt"
#define REMOTE_DATABASE_FILE "musiclist.txt"
int main() {
remove(DATABASE_FILE);
download(DATABASE_FILE, "musiclist.txt", REMOTE_URL, "Testing 123");
// ^^^ should't this be REMOTE_DATABASE_FILE?
...
}
void download(const char* file_to_write, const char* short_database, const char* addr, const char* msg) {
remove(DATABASE_FILE); // again?!?
struct FtpFile ftpfile={
DATABASE_FILE, /* name to store the file as if succesful */
// ^^^ which one? file_to_write or short_database
NULL
};