|
Передача файла с клиента на сервер без создания временного файла |
☑ |
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
|
Для больших файлов специально был разработан метод НачатьПомещкниеФайловНаСервер.
|
|
Требовать и эффективности, и гибкости от одной и той же программы — все равно, что искать очаровательную и скромную жену... по-видимому, нам следует остановиться на чем-то одном из двух. Фредерик Брукс-младший