Имя: Пароль:
1C
1С v8
Передача файла с клиента на сервер без создания временного файла
,
0 Dimarik_1
 
19.04.22
16:07
Хочу передать файл с клиента на сервер и не создавать временный файл.
Помещаю во временное хранилище на клиенте. На сервере пишу
ДвоичныеДанные = ПолучитьИзВременногоХранилища(АдресВХ);
Поток = Новый ПотокВПамяти();
    Запись = Новый ЗаписьДанных(Поток, КодировкаТекста.UTF8);
    Запись.Записать(ДвоичныеДанные);
    Запись.Закрыть();

Далее хочу прочитать и распарсить  JSON.
получаю пустоту

ЧтениеJson = Новый ЧтениеJSON;    
ЧтениеJson.ОткрытьПоток(Поток, КодировкаТекста.UTF8);
Пока ЧтениеJSON.Прочитать() Цикл....
что я не так сделал. Можете подсказать?
1 Галахад
 
гуру
19.04.22
16:11
Хм. А чего не строку передавать?
2 Dimarik_1
 
19.04.22
16:17
ну передам я на сервер не двоичные данные, а строку. Тогда мне надо создать потом, записать, а потом уже чтение json делать из этого оптока?
3 Галахад
 
гуру
19.04.22
16:21
(2) А сразу строку в json? Для чего вообще поток?
4 arsik
 
гуру
19.04.22
16:35
(0) У меня чтение вот так организовано
ПотокЧтения = ДвоичныеДанные.ОткрытьПотокДляЧтения();
ЧтениеXML = Новый ЧтениеXML;
ЧтениеXML.ОткрытьПоток(ПотокЧтения);
ДанныеХранилища = СериализаторXDTO.ПрочитатьXML(ЧтениеXML);
ЧтениеXML.Закрыть();
ПотокЧтения.Закрыть();
Возврат ДанныеХранилища;
5 arsik
 
гуру
19.04.22
16:41
Для json все то же самое
ПотокЧтения = ДвоичныеДанные.ОткрытьПотокДляЧтения();
ЧтениеJSON = Новый ЧтениеJSON;
ЧтениеJSON.ОткрытьПоток(ПотокЧтения);
Пока ЧтениеJSON.Прочитать() Цикл....
ЧтениеJSON.Закрыть();
ПотокЧтения.Закрыть();
6 arsik
 
гуру
19.04.22
16:43
(2) Зачем? ЧтениеJSON.УстановитьСтроку(ТвояСтрока)
7 Dimarik_1
 
19.04.22
16:46
Вот такой файл.
[{
        "FnsId": "2860",
        "UpdateDateTime": "22.04",
        "Statuses": [{
                "Id": 3554,
                "Comment": null
            }
        ]
    }]
Читаю данные. Пишу
на клиенте открываю файл:

ДвоичныеДанные = Новый ДвоичныеДанные(ДиалогВыбора.ПолноеИмяФайла);
        ЧтениеДанных = Новый ЧтениеДанных(ДвоичныеДанные);
        СтрокаJSON = ЧтениеДанных.ПрочитатьСимволы();    


на сервер передаю строку.
ЧтениеJSON = Новый ЧтениеJSON;
    ЧтениеJSON.УстановитьСтроку(СтрокаJSON);


возникает ошибка Непредвиденный символ при чтении JSON
8 arsik
 
гуру
19.04.22
16:51
(7) Твоя строка у меня нормально читается. А в СтрокаJSON у тебя наверно какая ни будь билиберда.
Зачем читать файл через двоичные данные, есть же миллиард менее проблемных вариантов https://programmist1s.ru/chtenie-tekstovogo-fajla-v-1s/
9 Garykom
 
гуру
19.04.22
18:54
(0) Дели файл на куски (это актуально ибо файлы под два гига портятся при передаче клиент-сервер) и передавай тупо строками
10 ДедМорроз
 
19.04.22
20:37
Для больших файлов специально был разработан метод НачатьПомещкниеФайловНаСервер.