Имя: Пароль:
1C
 
Как передать грамотно файл с клиента на сервер?
0 Shur1cIT
 
13.08.21
15:28
На стороне Клиента:
ФайлДвоичный = Новый ДвоичныеДанные(ПутьДоФайла);
АдресХранилища = ПоместитьВоВременноеХранилище(ФайлДвоичный, ЭтаФорма.УникальныйИдентификатор);

На стороне сервера:
ДвоичныеДанныеФайл = ПолучитьИзВременногоХранилища(АдресХранилища);


Тело = Base64Строка(ДвоичныеДанныеФайл);
HTTPЗапрос.УстановитьТелоИзСтроки(Тело);

Обратно из Base64 собрать файл не получается, причем файл не пустой, но при этом не открывается.
Вопрос где косяк?
1 ДенисЧ
 
13.08.21
15:30
НачатьПомещение... () сознательно не используешь?
2 ildary
 
13.08.21
15:33
(0)     ДвоичныеДанные = ПолучитьИзВременногоХранилища(АдресВХранилище);
    ДвоичныеДанные.Записать(ВременноеИмя);
3 Kassern
 
13.08.21
15:36
(1) только надо учитывать что данный метод: "Доступен, начиная с версии 8.3.15."
4 Kassern
 
13.08.21
15:37
(3) а всем кто до - переводим в ДД пихаем в хранилище, на сервере получаем из хранилища и записываем во временный файл.
5 ptiz
 
13.08.21
15:41
(0) "Обратно из Base64 собрать файл не получается" - как собираешь? Передаешь всё правильно.
6 H A D G E H O G s
 
13.08.21
15:41
(0)
Тело = Base64Строка(ДвоичныеДанныеФайл);
Тело=СтрЗаменить(Тело,Символы.ПС,"");
7 Shur1cIT
 
13.08.21
15:42
(4) те во временный файл сохраняю на сервере, далее уже получаю заново двоичные данные из временного файла?
те двоичные данные полученные сразу их хранилища не кошерны?
8 ptiz
 
13.08.21
15:43
+(5) Вру... В тело не надо чистый Base64Строка пихать. См.(6)
9 Shur1cIT
 
13.08.21
15:45
(3) там еще приписка в описании, мол не рекомендуем использовать начиная с 15 платформы.

Доступен, начиная с версии 8.3.13.
Не рекомендуется использовать, начиная с версии 8.3.15.
Описание изменено в версии 8.3.15.
10 ptiz
 
13.08.21
15:45
Обычно гоняют структуру в виде JSON. Сериализация в JSON поможет избежать таких проблем.
11 Kassern
 
13.08.21
15:46
(7) вопрос же стоял как передать файл, следовательно на сервере должен создаться файл. Поэтому и пихаем во временный файл, если надо только ДД, то и смысла нет файл создавать
12 fisher
 
13.08.21
15:47
(0) Я в похожей ситуации пихаю в хранилище значений и штатно его сериализую. Тогда и Base64 не надо и архивирование заодно.
13 Shur1cIT
 
13.08.21
16:01
(11) да но из ДД  Base64 криво создаётся, видимо двоичные данные битые
14 Fragster
 
гуру
13.08.21
16:07
ПолучитьИзВременногоХранилища(АдресХранилища); на сервере если не указывать ид формы можно только один раз - есть мнение, что ты этим разом пользуешься при отладке :)
15 H A D G E H O G s
 
13.08.21
16:09
(13) Ты пробовал (6) ?
16 rozer76
 
13.08.21
16:09
(14) это если при поместить... а у него ПоместитьВоВременноеХранилище(ФайлДвоичный, ЭтаФорма.УникальныйИдентификатор);
17 H A D G E H O G s
 
13.08.21
16:09
ну и попробовать
УстановитьТелоИзДвоичныхДанных()
18 Shur1cIT
 
13.08.21
16:17
(15) да, не помогло(
19 d4rkmesa
 
13.08.21
16:18
(9) Имеется виду, что функции из справки уже успели устареть и есть более новые: https://wonderland.v8.1c.ru/blog/unifikatsiya-metodov-raboty-s-faylami/?
20 Кир Пластелинин
 
13.08.21
16:22
(9) потому что появились новые функции по работе с файлами, а эти остались для обратной совместимости
21 Shur1cIT
 
13.08.21
17:17
проблема не в передачи с клиента на сервер, а в размещении другом ресурсе, понадеялся на Postman, завел отдельную тему Postman в каком формате передает файлы если поле имеет тип файл?
Требовать и эффективности, и гибкости от одной и той же программы — все равно, что искать очаровательную и скромную жену... по-видимому, нам следует остановиться на чем-то одном из двух. Фредерик Брукс-младший