I can't insert a file into a POST request with parameters.

The query itself works, but apparently 1C cuts the string file in binary data.

Процедура Сформировать() лпСайт="https://tep.org/services/document-upload"; ВыбПуть ="C:\v77_v8\gt.pdf"; КаталогФайлов = КаталогИБ(); ФайлОтправкиНачало = КаталогФайлов+"begin.txt"; ФайлОтправкиКонец = КаталогФайлов+"end.txt"; Скрипт = КаталогФайлов+"vbsscript.vbs"; Кав = Симв(34); //это символ кавычки ФайлОтправки = КаталогФайлов+"postOut.txt"; ФС.УдалитьФайл(ФайлОтправки); ФС.УдалитьФайл(Скрипт); //сделаем скрипт Текст1 = СоздатьОбъект("Текст"); Текст1.ДобавитьСтроку("const adTypeText=2"); Текст1.ДобавитьСтроку("const adTypeBinary=1"); Текст1.ДобавитьСтроку(""); Текст1.ДобавитьСтроку("const File2="+Кав+СокрЛП(ВыбПуть)+Кав); Текст1.ДобавитьСтроку("const OutputFile="+Кав+КаталогФайлов+"postOut.txt"+Кав); Текст1.ДобавитьСтроку(""); Текст1.ДобавитьСтроку("dim inStream, outStream"); Текст1.ДобавитьСтроку(""); Текст1.ДобавитьСтроку("set inStream=WScript.CreateObject("+Кав+"ADODB.Stream"+Кав+")"); Текст1.ДобавитьСтроку("set outStream=WScript.CreateObject("+Кав+"ADODB.Stream"+Кав+")"); Текст1.ДобавитьСтроку(""); Текст1.ДобавитьСтроку("inStream.Open"); Текст1.ДобавитьСтроку("inStream.type=adTypeBinary"); Текст1.ДобавитьСтроку(""); Текст1.ДобавитьСтроку("outStream.Open"); Текст1.ДобавитьСтроку("outStream.type=adTypeBinary"); Текст1.ДобавитьСтроку(""); Текст1.ДобавитьСтроку("inStream.LoadFromFile(File2)"); Текст1.ДобавитьСтроку("outStream.Write = inStream.Read()"); Текст1.ДобавитьСтроку(""); Текст1.ДобавитьСтроку("outStream.SaveToFile(OutputFile)"); Текст1.ДобавитьСтроку(""); Текст1.ДобавитьСтроку("outStream.Close()"); Текст1.ДобавитьСтроку("inStream.Close()"); Текст1.Записать(Скрипт); //выполним скрипт КомандаСистемы(КаталогФайлов+"vbsscript.vbs"); ТекстОтправки = ""; Текст = СоздатьОбъект("Текст"); Текст.Открыть(ФайлОтправки); Для Ном = 1 По Текст.КоличествоСтрок() Цикл ТекстОтправки = ТекстОтправки + Текст.ПолучитьСтроку(Ном)+разделительстрок; КонецЦикла; //Формирование тела сообщения ПараметрыПОСТ = ""; ПараметрыПОСТ = ПараметрыПОСТ + "--&MULTIPART_BOUNDARY" + РазделительСтрок; ПараметрыПОСТ = ПараметрыПОСТ + "Content-disposition: form-data; name=""id_city""" + РазделительСтрок; ПараметрыПОСТ = ПараметрыПОСТ + РазделительСтрок; ПараметрыПОСТ = ПараметрыПОСТ + "0" + РазделительСтрок; ПараметрыПОСТ = ПараметрыПОСТ + "--&MULTIPART_BOUNDARY" + РазделительСтрок; ПараметрыПОСТ = ПараметрыПОСТ + "Content-disposition: form-data; name=""id_teach""" + РазделительСтрок; ПараметрыПОСТ = ПараметрыПОСТ + РазделительСтрок; ПараметрыПОСТ = ПараметрыПОСТ + "1122334533" + РазделительСтрок; ПараметрыПОСТ = ПараметрыПОСТ + "--&MULTIPART_BOUNDARY" + РазделительСтрок; ПараметрыПОСТ = ПараметрыПОСТ + "Content-Disposition: form-data; name=""file""; filename=""gt.pdf""" + РазделительСтрок; ПараметрыПОСТ = ПараметрыПОСТ + "Content-Type: application/pdf" + РазделительСтрок; ПараметрыПОСТ = ПараметрыПОСТ + РазделительСтрок; ПараметрыПОСТ = ПараметрыПОСТ + ТекстОтправки + РазделительСтрок; ПараметрыПОСТ = ПараметрыПОСТ + "--&MULTIPART_BOUNDARY--" + РазделительСтрок; // РазмерФайла = СтрДлина(ПараметрыПОСТ); WinHttp = СоздатьОбъект("WinHttp.WinHttpRequest.5.1"); WinHttp.Option(2,"utf-8"); WinHttp.Open("POST", лпСайт, 0); WinHttp.SetRequestHeader("Content-type", "multipart/form-data; boundary=&MULTIPART_BOUNDARY");//Другая сторона должна понять входные данные см.oADOStream, а вот если вдруг не поймет (в чем у меня есть сомнения...), тогда придется указать явное без указания параметров выше: WinHttp.SetRequestHeader("Content-length", "" + РазмерФайла); Попытка WinHttp.Send(ПараметрыПОСТ); //При явном - строку запроса нужно получить из файла, тогда получится: // WinHttp.Send(строка запроса из файла); лпОтвет = WinHttp.ResponseText(); Сообщить(лпОтвет); СсылкаНаФайл = ПарсимОтвет(лпОтвет); Сообщить(СсылкаНаФайл); Возврат ; Исключение Сообщить("Ошибка: "+ОписаниеОшибки(),"!"); Возврат ; КонецПопытки; КонецПроцедуры 

What is the best and correct way to attach a file to POST?

    0