Возврат (передача) бинарных данных и имени файла через веб-сервис.

1. succub1_5 88 31.01.19 09:51 Сейчас в теме
Здравсвуйте, возникала необходимость передать бинарные данные:
Функция GetLoogoAction(ЗапросХТТП)
	ОтветХТТП = Новый HTTPСервисОтвет(200);
 
	
	ИмяФайла = "\\192.168.0.1\LOGO\LOGO.bmp";
	//проверим есть ли и сколько весит
	Файл = Новый Файл(ИмяФайла);
	Если Файл.Существует() Тогда
		//все ок, проверим размер норм 250 000
		Размер = Файл.Размер();
		Если Размер>1000000 Тогда
			ОтветХТТП.УстановитьТелоИзСтроки("> 1000000 " + ИмяФайла + " " + Размер);
			Возврат ОтветХТТП;
		КонецЕсли;		
	КонецЕсли;
	
	БинарныйФайл = Новый ДвоичныеДанные(ИмяФайла);
	
	////все ок - передадим
	//Попытка
	//	ЗаписьJSON = Новый ЗаписьJSON;
	//	ЗаписьJSON.УстановитьСтроку();
	//	
	//	ЗаписьJSON.ЗаписатьНачалоОбъекта();
	//	
	//	ЗаписьJSON.ЗаписатьИмяСвойства("name");
	//	ЗаписьJSON.ЗаписатьЗначение(СокрЛП(ФайлЛого.Имя));
	//	
	//	ЗаписьJSON.ЗаписатьИмяСвойства("bin");
	//	ЗаписьJSON.ЗаписатьЗначение(СокрЛП(БинарныйФайлЛого));
	//	
	//	ЗаписьJSON.ЗаписатьКонецОбъекта();			
	//	
	//	СтрокаJSON = ЗаписьJSON.Закрыть();
	//Исключение
	//	ОтветХТТП.УстановитьТелоИзСтроки(ОписаниеОшибки());
	//	Возврат ОтветХТТП;
	//КонецПопытки;

	//ОтветХТТП.УстановитьТелоИзСтроки(СтрокаJSON); //если имя и бинарник

	ОтветХТТП.УстановитьТелоИзДвоичныхДанных(БинарныйФайлЛого); //только файл

	Возврат ОтветХТТП;
КонецФункции
Показать

А если передаю имя и бинарные данные строкой - то данные приходят кривые.
ЧЯДНТ?
Ответы
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
2. caponid 31.01.19 12:02 Сейчас в теме
3. succub1_5 88 31.01.19 13:14 Сейчас в теме
(2) там длина строки уменьшится?
- не уменьшилась, но раскодирует, создает файл из бинарника - файл открывается.
//все ок - передадим
	Попытка
		ЗаписьJSON = Новый ЗаписьJSON;
		ЗаписьJSON.УстановитьСтроку();
		
		ЗаписьJSON.ЗаписатьНачалоОбъекта();
		
		ЗаписьJSON.ЗаписатьИмяСвойства("name");
		ЗаписьJSON.ЗаписатьЗначение(СокрЛП(Файл.Имя));
		
		ЗаписьJSON.ЗаписатьИмяСвойства("bin");
		//ЗаписьJSON.ЗаписатьЗначение(СокрЛП(БинарныйФайл));      //Base64Строка(Новый ДвоичныеДанные("D:\Файл.xml"))
		ЗаписьJSON.ЗаписатьЗначение(СокрЛП(Base64Строка(БинарныйФайл)));
		
		ЗаписьJSON.ЗаписатьКонецОбъекта();			
		
		СтрокаJSON = ЗаписьJSON.Закрыть();
	Исключение
		ОтветХТТП.УстановитьТелоИзСтроки(ОписаниеОшибки());
		Возврат ОтветХТТП;
	КонецПопытки;

	ОтветХТТП.УстановитьТелоИзСтроки(СтрокаJSON); //если имя и бинарник
Показать
4. succub1_5 88 31.01.19 13:22 Сейчас в теме
(3)мб кому пригодится - раскодировать из строки:
Base64Значение("z/Do4uXyIQ==")
Оставьте свое сообщение
Вакансии
Разработчик 1С (от middle до senior), до 300 К gross
Санкт-Петербург
зарплата от 195 000 руб. до 300 000 руб.
Полный день

Аналитик
Москва
зарплата от 150 000 руб.
Полный день

Разработчик 1С
Москва
зарплата от 150 000 руб.
Полный день

Разработчик 1С:ERP WE
Москва
зарплата от 250 000 руб.
Полный день

Аналитик 1С:ЗУП
Москва
зарплата от 150 000 руб.
Полный день