Skip to content

Latest commit

 

History

History
86 lines (56 loc) · 3.83 KB

upload_1c.md

File metadata and controls

86 lines (56 loc) · 3.83 KB

Пример загрузки картинки для 1C

&НаСервере
Функция СоздатьБаралог()
	
	Поток = Новый ПотокВПамяти();
	ЗаписьДанных = Новый ЗаписьДанных(Поток);
	
	ЗаписьДанных.ЗаписатьСтроку("Content-Disposition: form-data; name=""meta[type]""");
	ЗаписьДанных.ЗаписатьСтроку("");
	ЗаписьДанных.ЗаписатьСтроку("baralog-photo");
	
	ЗаписьДанных.Закрыть();
	
	Возврат Поток.ЗакрытьИПолучитьДвоичныеДанные();
		
КонецФункции

&НаСервере
Функция СоздатьФайл(ИмяСообщения, ИмяФайла, Картинка)
	
	Поток = Новый ПотокВПамяти();
	ЗаписьДанных = Новый ЗаписьДанных(Поток);
	
	ЗаписьДанных.ЗаписатьСтроку("Content-Disposition: form-data; name=""" + ИмяСообщения + """; filename=""" + ИмяФайла + """");
	ЗаписьДанных.ЗаписатьСтроку("Content-Type: image/jpeg");
	ЗаписьДанных.ЗаписатьСтроку("");

	ЗаписьДанных.Записать(Новый ДвоичныеДанные(Картинка));	
	ЗаписьДанных.Закрыть();
	
	Возврат Поток.ЗакрытьИПолучитьДвоичныеДанные();
		
КонецФункции

&НаСервере                                     
Процедура multipartHTTP()
	
	 Токен = ПолучитьТокен();
	
	Если Токен = Ложь Тогда
		Возврат;
	КонецЕсли;
	
	ФайлЗаписиОтвета = "D:\Ответ.txt";
	
	ДвоичныеДанныеБаралог = СоздатьБаралог();
	ДвоичныеДанныеФайл = СоздатьФайл("file", "File.jpg", "D:\123.jpg");
	
	Разделитель = "Asrf456BGe4h";
	
	Результат = Новый Структура();
	Заголовки = Новый Соответствие();
	
	Результат.Вставить("Заголовки", Заголовки);
	Заголовки.Вставить("Content-Type", "multipart/form-data; boundary=" + Разделитель);
	Заголовки.Вставить("Accept", "application/json");
	
	ПотокТело = Новый ПотокВПамяти();
	ЗаписьДанных = Новый ЗаписьДанных(ПотокТело);
	
	ЗаписьДанных.ЗаписатьСтроку("--" + Разделитель);
	ЗаписьДанных.Записать(ДвоичныеДанныеБаралог);
	
	ЗаписьДанных.ЗаписатьСтроку("--" + Разделитель);
	ЗаписьДанных.Записать(ДвоичныеДанныеФайл);
	ЗаписьДанных.ЗаписатьСтроку("--" + Разделитель);
	ЗаписьДанных.ЗаписатьСтроку("");
	ЗаписьДанных.ЗаписатьСтроку("--" + Разделитель + "--");
	
	ЗаписьДанных.Закрыть();
	
	ДвоичныеДанныеТело = ПотокТело.ЗакрытьИПолучитьДвоичныеДанные();
	
	Результат.Вставить("Тело", ДвоичныеДанныеТело);
	
	Соединение = Новый HTTPСоединение("upload.api.onliner.by",,,,,,Новый ЗащищенноеСоединениеOpenSSL());
	
	Запрос = Новый HTTPЗапрос("/upload?token=" + Токен, Заголовки);
	Запрос.УстановитьТелоИзДвоичныхДанных(Результат.Тело);
	
	HTTPОтвет = Соединение.ОтправитьДляОбработки(Запрос, ФайлЗаписиОтвета);
	
КонецПроцедуры