В начало

Загрузка JPG-файла в ответ заявки

 

Нужно загрузить JPG-файл методом «POST /api/file».

 

Листинг. Содержимое модуля формы

Функция ЗагрузкаJPGфайлаПродолжить(Знач Соединение, Знач Cookie, Знач qquuid, Знач qqfilename, Знач qqfile)

            Разделитель = СтрЗаменить(Новый УникальныйИдентификатор(), "-", "");

           

            //Тело запроса запроса                  

            Тело = Новый ПотокВПамяти();

           

            ЗаписьДанных = Новый ЗаписьДанных(Тело);//КодировкаТекста.UTF8

           

            ЗаписьДанных.ЗаписатьСтроку("--" + Разделитель);

            ЗаписьДанных.ЗаписатьСтроку("Content-Disposition: form-data; name=qquuid");

            ЗаписьДанных.ЗаписатьСтроку("");

            ЗаписьДанных.ЗаписатьСтроку(Строка(qquuid));

           

            //Параметр "qqfilename"      

            ЗаписьДанных.ЗаписатьСтроку("--" + Разделитель);

            ЗаписьДанных.ЗаписатьСтроку("Content-Disposition: form-data; name=qqfilename");

            ЗаписьДанных.ЗаписатьСтроку("");

            ЗаписьДанных.ЗаписатьСтроку(ПолучитьКороткоеИмяФайла(qqfilename));

           

 

            ЗаписьДанных.ЗаписатьСтроку("--" + Разделитель);

            ЗаписьДанных.ЗаписатьСтроку("Content-Disposition: form-data; name=qqfile; filename=""" + ПолучитьКороткоеИмяФайла(qqfilename) + """");

            ЗаписьДанных.ЗаписатьСтроку("");

            ЗаписьДанных.Записать(qqfile);

            ЗаписьДанных.ЗаписатьСтроку("");

           

            ЗаписьДанных.ЗаписатьСтроку("--" + Разделитель + "--");

            ЗаписьДанных.Закрыть();

           

            ТелоЗапроса = Тело.ЗакрытьИПолучитьДвоичныеДанные();

           

            Заголовки = Новый Соответствие;

            Заголовки.Вставить("Cookie", Cookie); 

            Заголовки.Вставить("Content-Type", "multipart/form-data; boundary=" + Разделитель);

           

            Запрос = Новый HTTPЗапрос("/api/file", Заголовки);

            Запрос.УстановитьТелоИзДвоичныхДанных(ТелоЗапроса);

           

            Ответ = Соединение.ВызватьHTTPМетод("POST", Запрос);

           

            //Запрос.ПолучитьТелоКакСтроку()

            Если Ответ.КодСостояния = 200 Тогда

                       

                        ЧтениеJSON = Новый ЧтениеJSON();

                        ЧтениеJSON.УстановитьСтроку(Ответ.ПолучитьТелоКакСтроку(КодировкаТекста.UTF8));

                        Результат = ПрочитатьJSON(ЧтениеJSON);

                        ЧтениеJSON.Закрыть();

                       

                        Для Каждого Эл Из Результат Цикл

                                   Сообщить(Эл.Ключ + " " + ?(Эл.Значение<>Неопределено, Эл.Значение, "Неопределено"));

                        КонецЦикла;

                       

                        Возврат qquuid;

            Иначе  

                        Сообщить(Ответ.КодСостояния);

                        Возврат "";

            КонецЕсли;

           

КонецФункции

 

&НаСервере

Процедура ЗагрузкаJpgФайлаНаСервере()

            Авт = Авторизация("123", "456");

           

            qquuid = Новый УникальныйИдентификатор;

            qqfilename = "C:\TEMP\Test.jpg";

            qqfile = Новый ДвоичныеДанные(qqfilename);

           

            Загр = ЗагрузкаJPGфайлаПродолжить(Авт.Соединение, Авт.Cookie, qquuid, qqfilename, qqfile);

КонецПроцедуры

 

&НаКлиенте

Процедура ЗагрузкаJpgФайла(Команда)

            ЗагрузкаJpgФайлаНаСервере();

КонецПроцедуры

 

Рис. Тело запроса (Начало)

Рис. Тело запроса (Конец)

 

Рис. Результат ответа при успешном запросе