@p3trukh1n
NooB IN WeB

При вводе пути к файлу через консоль CURL перестает работать, что делать?

Скрипт загрузки файла на сервер. Работает через curl.
Когда ввожу "CURLFORM_FILE" в исходнике, все работает
Если же делаю запрос ввода в консоли, то файл не загружается. ($_FILES пуст)
#include <iostream>
#pragma comment( lib, "C:/libCURL/lib/libcurl.a")
#pragma comment( lib, "C:/libCURL/lib/libcurl.dll.a")
#include "curl/curl.h"
#include <Windows.h>
#include <stdio.h>
#include <string>

using namespace std;

int main(int argc, char* argv[])
{
	setlocale(0, "");
	CURL* curl;
	CURLcode res;
	string filepath;
	curl_httppost* post = NULL;
	curl_httppost* last = NULL;
	cout << "input filepath: ";
	cin >> filepath;
	cout << "filepath:" << filepath << endl;
	curl = curl_easy_init();
	if (curl)
	{
		curl_formadd(&post, &last,
			CURLFORM_COPYNAME, "userfile",
			CURLFORM_FILE, filepath, // Здесь проблема
			CURLFORM_END);

		curl_easy_setopt(curl, CURLOPT_URL, "(tut site)");
		curl_easy_setopt(curl, CURLOPT_HTTPPOST, post);

		res = curl_easy_perform(curl);
		if (res)
		{
			return 0;
		}

		curl_formfree(post);
	}
	else
	{
		return 0;
	}

	curl_easy_cleanup(curl);
	return 0;
}
  • Вопрос задан
  • 86 просмотров
Решения вопроса 1
SerJook
@SerJook
кодер
После CURLFORM_FILE должен идти указатель на "голую" строку (массив char, заканчивающийся нулем), вы же передаете объект типа string.
Должно быть так:

curl_formadd(&post, &last,
      CURLFORM_COPYNAME, "userfile",
      CURLFORM_FILE, filepath.c_str(),
      CURLFORM_END);
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы