Имя: Пароль:
1C
 
POST-запрос CURL multipart/form-data. Как отправить конкретный файл с жесткого диска?
0 Json_Born
 
17.08.23
13:07
Здравствуйте, форумчане.

Есть CURL запрос:
curl --request POST \
  --url https://markirovka.sandbox.crptech.ru/api/v3/true-api/documents/aggregation/create \
  --header 'Accept: application/json' \
  --header 'Authorization: Bearer <Token>
  --header 'Content-Type: multipart/form-data; boundary=---011000010111000001101001' \
  --header 'X-Signature: Закодированная откреплённая подпись в формате base64 '\
  --form 'jsonFile=@C:\Users\7777\Desktop\FileName.json'

Как перевести на язык 1С последнюю строку "--form 'jsonFile=@C:\Users\7777\Desktop\FileName.json'" ?
1 Волшебник
 
17.08.23
13:16
HTTPЗапрос.УстановитьИмяФайлаТела(<ПутьКФайлу>)

Устанавливает имя файла, из которого будет прочитано тело запроса.
2 Garykom
 
17.08.23
13:25
(0) смотри Процедура ВыгрузитьСчетНаОплату(ЗаказКлиента) в
https://gist.github.com/vyachin/7ed736a499434d77fbf93e1c7401e6bf
3 Garykom
 
17.08.23
13:26
(1) Я что то пропустил?
Теперь УстановитьИмяФайлаТела само заполняет правильно Content-Type и boundary?
4 Garykom
 
17.08.23
13:28
5 Json_Born
 
17.08.23
20:57
(1) Спасибо, немного не то
(2) Вот это то, что нужно! Здоровья вам!
Сейчас пока что тестирую, как закончу, напишу полностью результат
6 Garykom
 
17.08.23
21:08
(5) Для чего делаешь то?
Случайно не конвертацию/обработку файлов через https://gotenberg.dev/ ?

Учти в
ЗаписьТекста.ЗаписатьСтроку("Content-Disposition: form-data; name=""file""; filename=""" + ИмяФайлаДок + """");

ИмяФайлаДок - строго латиница для большинства серверов/сервисов

И там еще куча заморочек может быть
Ну там классически BOM/кодировка и РазмерФайлаОтправки
7 Garykom
 
17.08.23
21:09
(6)+ а у тебя маркировка в (0) же
8 Garykom
 
17.08.23
21:10
для маркировки json который был подписан и который отправляется вроде должен быть отформатирован правильно/одинаково
и помню заморочки с кодировками там были да
9 stopa85
 
17.08.23
21:46
(0) Content-type странный.

Я так отправляю, в файлы ничего не записываю

ЗаголовкиВебЗапроса = новый Соответствие();
ЗаголовкиВебЗапроса.Вставить("content-type", "application/json");
ЗаголовкиВебЗапроса.Вставить("Authorization", "Bearer " + СтруктураДоступа.Токен);

ВебЗапрос = новый HTTPЗапрос(СтруктураШлюза.ПутьНаСервере + "/v3/lk/documents/create?pg="+ТоварнаяГруппаСтрока(ТоварнаяГруппа), ЗаголовкиВебЗапроса);
ВебЗапрос.УстановитьТелоИзСтроки(ТелоВебЗапроса, КодировкаТекста.UTF8, ИспользованиеByteOrderMark.Авто);

ВебОтвет = Соединение.ОтправитьДляОбработки(ВебЗапрос);
ТелоОтвета = ВебОтвет.ПолучитьТелоКакСтроку();
10 stopa85
 
17.08.23
21:48
Хотя сорри. Это же у тебя СУЗ и 3ий API
11 MWWRuza
 
17.08.23
22:12
Под семеркой делал  правда, но, именно для маркировки и мультипарт, почитайте, может что-то полезное почерпнете: Работа с ЭДО через API...
А это от ЁПРСТ: 1С: POST-запрос с типом multipart/form-data