Вход | Регистрация
 

Как передать грамотно файл с клиента на сервер?

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

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


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

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

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


Список тем форума
 
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.