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

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

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

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

ДанныеИзображения  - будет длинная строка
при передаче через http сервис, строка обрежется до какого то числа символов.
Структура в json, это тоже текстовое представление будет
13 Sasha_H
 
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-запросом.
15 Sasha_H
 
11.09.18
21:52
Здесь пример того как вообще весь пакет обмена обворачивается и сжимается
16 Sasha_H
 
11.09.18
21:53
что значительно экономит пакет передаваемых данных в канале
17 DmitrO
 
11.09.18
23:58
(12)по умолчанию на IIS есть ограничение на размер загружаемых в запросе данных 30000000.
Этот лимит надо просто увеличить в web.config на сервере:
<system.webServer>
   <security>
      <requestFiltering>
         <requestLimits maxAllowedContentLength="100000000" />
      </requestFiltering>
   </security>
</system.webServer>
2 + 2 = 3.9999999999999999999999999999999...