| 
    
            
         
         | 
    
  | 
Как передать картинку с мобильного приложения | ☑ | ||
|---|---|---|---|---|
| 
    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>  | 
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |