170 похожих чатов

Всем привет! В C++ не особо хорош, но задача: Отправить

post запрос на сервер вместе с картинкой в бинарном формате. Аналогия в питоне open(filename, 'rb')).


Пытаюсь использовать либу cpr и сделать так:

std::FILE *fp = std::fopen("aaa.jpg", "rb");


json::json j;
j["my_file"] = fp;

auto response = cpr::Post(
cpr::Url{url_for_frs_token},
cpr::Body{j.dump()
}
);


Кидает ошибку в этом моменте: j["my_file"] = fp;

Можете подсказать как решить эту проблему?

37 ответов

11 просмотров

https://t.me/supapro/991704

Alexander Karaev
https://t.me/supapro/991704

вот я так и пытаюсь сделать. Вот этот момент выдает ошибку j["my_file"] = fp;

Aidyn
вот я так и пытаюсь сделать. Вот этот момент выд...

Это неправильно. Почему ты решил так сделать?

Alexander Karaev
Это неправильно. Почему ты решил так сделать?

Особых причин нету, я просто пытаюсь решить это. А как правильно ?

Aidyn
вот я так и пытаюсь сделать. Вот этот момент выд...

а в каком формате принимает запрос сервер?

Aidyn
Особых причин нету, я просто пытаюсь решить это. А...

Правильно - прочитать документацию к библиотеке

C++ - не питон, здесь нельзя наугад писать код, не читая документацию, в надежде, что оно как-нибудь заработает

다니엘(줄리아)
а в каком формате принимает запрос сервер?

если на питоне , принимает в :'_io.BufferedReader' в С++ точно не знаю, пока с такой же логикой открывал файл: std::FILE *fp = std::fopen("aaa.jpg", "rb");

Aidyn
если на питоне , принимает в :'_io.BufferedReader'...

Код для отправки на питоне как выглядит?

다니엘(줄리아)
Код для отправки на питоне как выглядит?

data = {file': open('aa.jpg', 'rb')} response = requests.post(url, files=data)

Aidyn
и ?

Зачем в с++ так открывать?

Aidyn
data = {file': open('aa.jpg', 'rb')} response = re...

В таком случае нужно сначала прочитать файл в какой-то буфер, а потом записать из буфера в json

Alexius Bèlov
Зачем в с++ так открывать?

мне непринципиально как открывать, мне просто нужно отправить. Если есть путь как это можно сделать, был бы рад услышать)

Aidyn
хмм, а в какой буфер , есть варианты ?

В тот, который сможет принять библиотека для json (а это можно узнать из документации..)

Aidyn
data = {file': open('aa.jpg', 'rb')} response = re...

а вы уверены что он в бинарном виде отправляется?

Aidyn
Да

Тебе надо прочитать файл, запихнуть это в json и о править?

Aidyn
грубо говоря, да

std::istreambuf_iterator std::vector<char> и строка

Aidyn
Да

json::json j; std::ifstream input( "file.jpg", std::ios::binary ); std::copy( std::istreambuf_iterator<char>(input), std::istreambuf_iterator<char>( ), std::back_inserter(json.emplace("my_file", "").first));

다니엘(줄리아)
json::json j; std::ifstream input( "file.jpg", std...

Я бы в вектор с начала загнал сразу

Если не хорош в С++, то и не фиг таким заниматься.

다니엘(줄리아)
вряд ли сработает

вообще, в питоне в files он. Тут точно не знаю

Aidyn
вообще, в питоне в files он. Тут точно не знаю

а документацию почитать кто-то запрещает?

Aidyn
Особых причин нету, я просто пытаюсь решить это. А...

Как бы это долго объяснять очень... Ты как это представляешь-то? Зашёл так в чат, и быстренько выучил С++, и все библиотеки на нём...

Ilya Zviagin
Как бы это долго объяснять очень... Ты как это пре...

Не понимаю причем тут это. У меня есть вопрос, вот я и его задаю.

ну а что ты вообще тут хотел сделать? В JSON бывают 5 типов данных: число, булева величина, строка, массив и объект. FILE* ни к одному из этих типов не относится.

Alexander Karaev
В таком случае нужно сначала прочитать файл в како...

скорее всего в либе есть возможность читать напрямую из стрима...

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

Обсуждают сегодня

Коллеги, я тут для личных нужд пошел ставить MQTT сервер, пощупал mosquitto, но ужаснулся отсутствию такой банальности, как HTTP API для посмотреть список топиков. А тут что,...
Maksim Lapshin
13
Всем привет! Имеется функция: function IsValidChar(ch: UTF8Char): Boolean; var i: Integer; ValidChars: AnsiString; begin ValidChars := 'abcdefghijklmnopqrstuvwxyzABCDE...
Евгений
44
#include <stdio.h> #include <stdlib.h> #include <time.h> void mass_first_generate(int mass[5][7]) {     for (int N = 0; N < 5; N++) {         for (int A = 0; A < 7; A++) {   ...
Чувак
6
Всем привет! Решаю 99 OCaml Problems и столкнулся со следующей проблемой (прошу палками не забивать, я OCaml практически не трогал до этого момента): open OUnit2 let create_...
К|/|pи/\/\ 6е3yглbIи
2
https://www.linkedin.com/posts/ugama-benedicta-kelechi-codergirl-103041300_mobiledevelopment-fluttertraining-handsonlearning-activity-7263445699227254784-IdHB?utm_source=share...
CoderGirl
16
Ну вот просто даже давайте вот как. Какой нибудь конкретный кейс, можете в пример привести, где бч работает и приносит прикладную пользу, а не просто что бы было? Не крипту.
Alexander Andreev
22
возможно ли как-то передать в электрон или таури медиа поток с рендера 2д движка? двиг запускается как dll, а дальше надо как-то отправлять рендер кодировать не подходит, зр...
Kyle Nekto
7
Точно, оно. У тебя там имена потоков выставляются?
Александр (Rouse_) Багель
11
Помогите пожалуйста. Делаю систему плагинов. Проблема сейчас в такая: плагины загружаются в основном потоке. FLibHandle := SafeLoadLibrary(FFileName) Но нужно еще выполнить фу...
Илья 🤣
10
объясните пожалуйста, почему функция не работает должным образом? вроде должно брать активное окно сравнивать его размер с размером экрана, и если есть совпадение = true прове...
JF
12
Карта сайта