Имя: Пароль:
IT
Мобильный мир
Передача файлов (фото, видео) из 1С:Mobile на серверную БД
0 Cmyk32
 
25.03.14
16:40
Добрый день!
Есть мобильное приложение (МП) и на сервере центральная БД 1С (ЦБД) + web-сервер.
Как лучше организовать передачу файлов МП -> ЦБД?
Размер файлов: от 200 кб до 5 мб.

Сейчас передаю как двоичные данные - очень медленно.
1 MrJcnby
 
25.03.14
17:10
Как вариант - пожертвовать качеством фото. Заметно урежет размер, и как следствие время передачи.
Сами с этим столкнулись.
2 Cmyk32
 
25.03.14
18:47
(1) Урезала все + СжатиеДанных(9). Можете оценить -сколько минут/секунд у Вас занимает передача 1Мб?
Может неверно организовала передачу самого файла по веб-серверу?

На мобильном приложении:

ИмяВременногоФайла = ПолучитьИмяВременногоФайла();
Файл.ХранилищеЗначения.Получить().Записать(ИмяВременногоФайла);

ФайлПередачи = Новый ДвоичныеДанные(ИмяВременногоФайла);
ТипДвоичныеДанные = ФабрикаXDTO.Тип("http://www.w3.org/2001/XMLSchema";, "base64Binary");
ДвоичныеДанные = ФабрикаXDTO.Создать(ТипДвоичныеДанные, ФайлПередачи);

Попытка                        
ФайлОбъект = Файл.ПолучитьОбъект();
ФайлОбъект.Выгружено = Прокси.DownloadPhoto(ДвоичныеДанные, Выборка.Наименование);
ФайлОбъект.Записать();
Исключение
КонецПопытки;

На сервере:

Функция DownloadPhoto(ДвоичныеДанные, Наименование)    
        
ХранилищеЗначения = Новый ХранилищеЗначений(ДвоичныеДанные);
    
ФайлСсылка = Справочники.Файлы.НайтиПоНаименованию(Наименование);
Если ФайлСсылка.Пустая() Then
ФайлОбъект = Справочники.Файлы.СоздатьЭлемент();    Иначе
ФайлОбъект = ФайлСсылка.ПолучитьОбъект();
КонецЕсли;

ФайлОбъект.Наименование = Наименование;
ФайлОбъект.ХранилищеЗначения = ХранилищеЗначения;
    
Попытка
ФайлОбъект.Записать();
Исключение
Возврат Ложь;
КонецПопытки;
        
Возврат Истина;
    
КонецФункции
3 MrJcnby
 
26.03.14
10:38
Технология такая же. Тоже в преобразование в двоичные данные, передача, преобразование из двоичных данных. По скорости ( но я уверен что постоянной одинаковой скорости провайдер не дает ) - получается 1мб что-то около минуты (может быть меньше может быть чуть больше - в зависимости от связи).
4 Адинэснег
 
26.03.14
10:40
5 MrJcnby
 
26.03.14
16:13
(4) Хм. Как я понял вопрос стоит именно в части кода, а не в технологии соединения.
6 Cmyk32
 
26.03.14
17:08
(5) Вы правильно поняли.
(4) Затратно.
7 Cmyk32
 
26.03.14
17:09
(3) Спасибо!) У нас также примерно.
8 Serginio1
 
26.03.14
18:26
Можешь попробовать передавать не как ДД а как хранилищеЗначения

v8: Работа с веб сервисом

Хотя картинки сжиматься не будут.
9 Йохохо
 
26.03.14
18:30
а какой размер у картинки и у base64Binary картинки?
10 Asmody
 
26.03.14
18:52
В мобильном приложении HTTPСоединение.post() доступно?
11 Serginio1
 
26.03.14
18:58
(9) wiki:Base64#MIME
Результирующие закодированные по base64 данные имеют длину, большую оригинальной в соотношении 4:3.
12 Йохохо
 
26.03.14
19:00
(11) м, я думал хуже, не стал гуглить