Я пытаюсь загрузить файл на веб-сервер, используя libcurl (на языке C). Сервер требует, чтобы я использовал POST, а не PUT (это то, что CURLOPT_UPLOAD будет использовать). Я могу успешно загрузить файл со статусом 200, но когда я загружаю файл с сервера, он пуст. Нет проблем с сервером, так как я проверил POSTMAN, он принимает POST для файла и отправляет файл вместе с контентом при загрузке.
int HttpUploadFile(const char *url, const char *filePath, Buffer
*response){
int status;
CURL *handle;
FILE *fp;
struct stat file_info;
int exist = stat(filePath, &file_info);
if(exist != 0) {
ERROR("stat() failed: %s", strerror(errno));
return -1;
}
fp = fopen(filePath, "rb");
if (fp == NULL) {
ERROR("fopen() failed for file : %s %s", filePath,
strerror(errno));
return -1;
}
status = HttpInitHandle(url, &handle);
if (status != 0) {
fclose(fp);
return -1;
}
curl_easy_setopt(handle, CURLOPT_URL, url);
curl_easy_setopt(handle, CURLOPT_READDATA, fp);
curl_easy_setopt(handle, CURLOPT_POST, 1L);
curl_easy_setopt(handle, CURLOPT_POSTFIELDSIZE,
file_info.st_size);
curl_easy_setopt(handle, CURLOPT_WRITEFUNCTION, HttpReceiveCb);
curl_easy_setopt(handle, CURLOPT_WRITEDATA, (void *)response);
status = HttpSendRequest(handle);
fclose(fp);
return status;
}
В HttpSendRequest я добавляю заголовки и отправляю запрос.
Что-то не так с установленными параметрами POST?