gpt4 book ai didi

c++ - 传输 libcurl 后损坏的二进制文件

转载 作者:行者123 更新时间:2023-11-27 22:30:18 27 4
gpt4 key购买 nike

我正在使用 libcurl 通过 FTP 传输二进制文件 (.exe),并将其保存到本地文件。问题是文件传输后,它已被更改,不再是有效的 Win32 应用程序,因此无法运行。这是我的做法:

CURL *curl;

curl = curl_easy_init();
FILE* f = fopen("C:\\blah.exe", "w");

if(curl) {
curl_easy_setopt(curl, CURLOPT_URL, "ftp://ftp.mysite.com");
curl_easy_setopt(curl, CURLOPT_USERPWD, "blah:blah");
curl_easy_setopt(curl, CURLOPT_FTP_FILEMETHOD, CURLFTPMETHOD_SINGLECWD);
curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, NULL);
curl_easy_setopt(curl, CURLOPT_WRITEDATA, &f);
} else {
fclose(f);
return CURL_EASY_INIT_FAIL;
}

fclose(f);

文件已写入,但比 FTP 服务器上的文件大。正如我所说,尝试运行它会导致“%1 不是有效的 Win32 应用程序”错误。我是不是忘了设置选项之类的?

最佳答案

你忘记了二进制标志。这是正确的代码:

 FILE* f = fopen("C:\\blah.exe", "wb");

关于c++ - 传输 libcurl 后损坏的二进制文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3412074/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com