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

Postman в каком формате передает файлы если поле имеет тип файл?

Postman в каком формате передает файлы если поле имеет тип файл?
Я
   Shur1cIT
 
13.08.21 - 17:16
вот как в постмане https://c.radikal.ru/c42/2108/c7/e38a3273955d.png
в 1С пытаюсь файл тупо в Base64 преобразовать и выполнить УстановитьТелоИзСтроки
в результате файл нечитаемый, если через постман то всё ок
   Fragster
 
1 - 13.08.21 - 17:17
скорее всего тебе надо курить multipart кодирование
   Fragster
 
2 - 13.08.21 - 17:17
1с к этому не располагает совсем
   Fragster
 
3 - 13.08.21 - 17:17
вернее не облегчает
   Fragster
 
4 - 13.08.21 - 17:18
   Fragster
 
5 - 13.08.21 - 17:18
хотя может в бсп какие-то облегчалки есть для этого
   polosov
 
6 - 13.08.21 - 17:20
   Shur1cIT
 
7 - 13.08.21 - 17:26
спасибо, проще вариантов нет?
   Fragster
 
8 - 13.08.21 - 17:28
(6) этот хороший, да.
   Вафель
 
9 - 13.08.21 - 17:32
(8) Эхх, я как то тебя более спортивным представлял
   Shur1cIT
 
10 - 13.08.21 - 17:36
это не оно?
https://its.1c.ru/db/metod8dev#content:5917:hdoc:http-messages
если в этом примера буду свой файл помещать сработает? обязательно Content-Type задавать для файла? у меня разные могут быть
   rozer76
 
11 - 13.08.21 - 17:46
   Вафель
 
12 - 13.08.21 - 17:47
(10) такой юзай
application/octet-stream
   polosov
 
13 - 13.08.21 - 17:48
(10) Да, это оно. Пробуй.
   Shur1cIT
 
14 - 13.08.21 - 17:50
ок спасибо
   rozer76
 
15 - 13.08.21 - 18:38
Только причем тут мультипарт? Если читать мультипарт то да, это непросто. Нет разных типов данных которые нужно писать, нет разделителей - обычные двоичные данные и УстановитьТелоИзДвоичныхДанных() должно прокатить
   Shur1cIT
 
16 - 13.08.21 - 22:29
Почти разобрался, это код рабочий, но грузит корректно только pdf файлы, картинки и exel не читаемы на портале, при этом если руками на портал гуду то все окей

Поток = Новый ПотокВПамяти();
    ЗаписьДанных = Новый ЗаписьДанных(Поток);
    ЗаписьДанных.ЗаписатьСтроку("Content-Disposition: form-data; name=""; filename=" + ИмяФайла);
    ЗаписьДанных.ЗаписатьСтроку("Content-Type: application/octet-stream");
    ЗаписьДанных.ЗаписатьСтроку("");
    ЗаписьДанных.Записать(Файл);// файл - это двоичные данные

    ЗаписьДанных.Закрыть();
    
    ФайлДвоичныеДляОтправики = Поток.ЗакрытьИПолучитьДвоичныеДанные();
    HTTPЗапрос.УстановитьТелоИзДвоичныхДанных(ФайлДвоичныеДляОтправики);
    
    Результат = Соединение.ОтправитьДляОбработки(HTTPЗапрос);

    ТелоОтвета = Результат.ПолучитьТелоКакСтроку();

    Возврат Результат.КодСостояния
   Shur1cIT
 
17 - 13.08.21 - 22:35
Нужно понять почему ему только PDF нравится может это связано с application/octet-stream? или не влияет?
   Shur1cIT
 
18 - 16.08.21 - 08:13
(16) (17) Поднимаю тему, почему корректно грузится только PDF через поток? как заставить все грузить?
   бегинер
 
19 - 16.08.21 - 09:39
может быть у вас такой случай, тоже получал файлы в постмане норм, в 1с- кракозяблы, оказалось браузер на лету gzip разархивирует (файл в gzip выдавал сервер) а 1с не может

==============
так как штатно 1С gzip не может разархивировать, нашел бесплатную dll (дублирую во вложении) которую регим через regsvr32 и используем как COM Обьект, она соотв. может разарх. gzip

http://www.xstandard.com/en/documentation/xgzip/
   бегинер
 
20 - 16.08.21 - 09:49
вот мой код для получения ответа (не файла), у меня сервер ответ в gzip выдавал

Соединение = Новый HTTPСоединение(ссылка_на_rest_api,,,,,таймаут_rest); 
Заголовки = Новый Соответствие;
Заголовки.Вставить("Authorization", логин_пароль_base64);
Заголовки.Вставить("Content-type", "application/json");
Заголовки.Вставить("Accept-Encoding", "gzip");
Запрос = Новый HTTPЗапрос(приписка_к_ссылке,Заголовки);
Запрос.УстановитьТелоИзСтроки(строка_тела,"CESU-8");
  попытка;
    Результат=Соединение.ОтправитьДляОбработки(Запрос);
  исключение;    
    сообщить("нет соединения или ответа с сервером ");
  конецпопытки;
ДвоичныеДанные = Результат.получитьТелоКакДвоичныеДанные();
ДвоичныеДанные.Записать(путь+"файл_gzip.zip");
архиватор=Новый COMОбъект("XStandard.GZip");
архиватор.Decompress (путь+"файл_gzip.zip", путь+"распакованный_файл_gzip");
архиватор=неопределено;
Файл = Новый ЧтениеТекста(путь+"распакованный_файл_gzip",кодировкатекста.UTF8);
ВесьФайлОднойСтрокой = Файл.Прочитать();
Файл.Закрыть();
   Shur1cIT
 
21 - 16.08.21 - 10:50
(20) спасибо, это немного не то
   ДенисЧ
 
22 - 16.08.21 - 11:05
(19) А что, в заголовках нельзя было сказать, что  не Accept gzip?
Обычно сервера такое понимают.
   бегинер
 
23 - 16.08.21 - 12:45
(19) неа, там и в описании поставщика api даже не было написано что ответ в gzip отдается :)  сделали как смогли


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