Вход | Регистрация

1С:Предприятие ::

Метки: 

Как передать картинку с мобильного приложения

Я
   Vvvvv
 
10.09.18 - 15:05
Возник вопрос, как передать картинку с мобильного приложения, в рабочую базу.
Картинка будет получаться в камеры телефона.
Интересует как возвращаться?
На данный момент мобильное приложение обращается к рабочей базе через http сервис.
Если как текст передать, я имею представления, но как картинку, даже не представляю еще?
 
 
   s03
 
1 - 10.09.18 - 15:08
также как и любой другой файл, передавай как самые обычные двоичные данные, например, а при получении собирай обратно в картинку
   Vvvvv
 
2 - 10.09.18 - 15:28
(1) Значит картинку шифрую в двоичные данные и передаю в другую базу через http соединие
   Vvvvv
 
3 - 11.09.18 - 16:46
Нужна помощь.
На мобильном приложении через камеру сделал фото, получил двоичные данные этой фотографии

Дальше не могу понять как отправить в каком формате и соответсвенно как принять файл?
   arsik
 
4 - 11.09.18 - 16:52
base64
   Vvvvv
 
5 - 11.09.18 - 16:53
(4) по подробнее
   arsik
 
6 - 11.09.18 - 16:53
   Пуля
 
7 - 11.09.18 - 16:54
Отправь на почту или фтп, и читай оттуда.
   DmitrO
 
8 - 11.09.18 - 17:36
(3)С мобильного девайса делаем POST запрос, в тело запроса закидываем двоичные данные картинки методом HTTPЗапрос.УстановитьТелоИзДвоичныхДанных().
На сервере получаем тело запроса HTTPСервисЗапрос.ПолучитьТелоКакДвоичныеДанные().
   Vvvvv
 
9 - 11.09.18 - 18:26
(4) при передаче через http сервис, этот метод не подходит,  т.к. обрезаются символы

(8) не сочти за наглость, но есть конкретный пример?
   icipher
 
10 - 11.09.18 - 21:02
Фото = СредстваМультимедиа.СделатьФотоснимок(ТипКамерыУстройства.Задняя, НастройкиКамеры, 90);
ДанныеИзображения = Base64Строка(Фото.ПолучитьДвоичныеДанные());

потом ДанныеИзображения в структуру, структуру в json, json  в тело запроса, запрос в сервер)
 
 Рекламное место пустует
   Sasha_H
 
11 - 11.09.18 - 21:07
только надо еще сжать хранилищем
   Vvvvv
 
12 - 11.09.18 - 21:26
(10) В примере
ДанныеИзображения = Base64Строка(Фото.ПолучитьДвоичныеДанные());

ДанныеИзображения  - будет длинная строка
при передаче через http сервис, строка обрежется до какого то числа символов.
Структура в json, это тоже текстовое представление будет
   Sasha_H
 
13 - 11.09.18 - 21:43
&НаСервереБезКонтекста
Функция СериализоватьДанные(Объект)
    
    //Если Объект.Количество() = 0 Тогда Возврат "" КонецЕсли;

    
    ХДТО = СериализаторXDTO.ЗаписатьXDTO(Объект);
    хмл = Новый ЗаписьXML;
    хмл.УстановитьСтроку();
    
    ФабрикаXDTO.ЗаписатьXML(хмл,ХДТО);
    
    РезХМЛ = хмл.Закрыть();
    
    Возврат РезХМЛ;
КонецФункции


ПакетХМЛ = СериализоватьДанные(Соединения);
        СжатыйПакетХДТО = Новый ХранилищеЗначения(ПакетХМЛ, Новый СжатиеДанных(9));


//Отправка SOAP-запроса

        Попытка
            Ответ = СтруктураДанных.ВСПрокси.Exchange(ФабрикаXDTO.Создать(СтруктураДанных.ТипыXDTO[0], IMEI),
                                ФабрикаXDTO.Создать(СтруктураДанных.ТипыXDTO[1], СериализоватьДанные(СжатыйПакетХДТО)));
            
        Исключение
            Сообщить(ОписаниеОшибки());
            Возврат Ложь;
        КонецПопытки;    




//на приемнике


Функция ДесериализоватьДанные(XML)
    
    Чтение = Новый ЧтениеXML;
    Чтение.УстановитьСтроку(XML);
    Данные = СериализаторXDTO.ПрочитатьXML(Чтение);
    Чтение.Закрыть();
    
    Возврат Данные;
КонецФункции

ОбменПоНастройке = ДесериализоватьДанные(Struct);
    
    Если ТипЗнч(ОбменПоНастройке) = Тип("ХранилищеЗначения") Тогда
        ДанныеХранилища = ОбменПоНастройке.Получить();
        ОбменПоНастройке = ДесериализоватьДанные(ДанныеХранилища);
    КонецЕсли;
   Юрий Лазаренко
 
14 - 11.09.18 - 21:49
(12) Ты наверно get-запросом передаешь, он обрезается. Передавай post-запросом.
   Sasha_H
 
15 - 11.09.18 - 21:52
Здесь пример того как вообще весь пакет обмена обворачивается и сжимается
   Sasha_H
 
16 - 11.09.18 - 21:53
что значительно экономит пакет передаваемых данных в канале
   DmitrO
 
17 - 11.09.18 - 23:58
(12)по умолчанию на IIS есть ограничение на размер загружаемых в запросе данных 30000000.
Этот лимит надо просто увеличить в web.config на сервере:
<system.webServer>
   <security> 
      <requestFiltering> 
         <requestLimits maxAllowedContentLength="100000000" /> 
      </requestFiltering> 
   </security> 
</system.webServer>


Список тем форума
Рекламное место пустует Рекламное место пустует
Здесь можно задать вопрос "Как сделать?" и получить кучу ответов, что тебе это делать не надо. Ymryn
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.
Рекламное место пустует