Я передаю двоичный файл (.exe) по FTP, используя libcurl, и сохраняю его в локальный файл. Проблема в том, что после передачи файла он изменяется и больше не является допустимым приложением 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». Я забыл установить опцию или что-то?