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

1. succub1_5 89 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 Сейчас в теме
кодировать в BASE64
+
Остальные ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. caponid 31.01.19 12:02 Сейчас в теме
кодировать в BASE64
+
3. succub1_5 89 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 89 31.01.19 13:22 Сейчас в теме
(3)мб кому пригодится - раскодировать из строки:
Base64Значение("z/Do4uXyIQ==")
+
Внимание! Тема сдана в архив

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот