|
Postman в каком формате передает файлы если поле имеет тип файл? | ☑ | ||
---|---|---|---|---|
0
Shur1cIT
13.08.21
✎
17:16
|
вот как в постмане https://c.radikal.ru/c42/2108/c7/e38a3273955d.png
в 1С пытаюсь файл тупо в Base64 преобразовать и выполнить УстановитьТелоИзСтроки в результате файл нечитаемый, если через постман то всё ок |
|||
1
Fragster
гуру
13.08.21
✎
17:17
|
скорее всего тебе надо курить multipart кодирование
|
|||
2
Fragster
гуру
13.08.21
✎
17:17
|
1с к этому не располагает совсем
|
|||
3
Fragster
гуру
13.08.21
✎
17:17
|
вернее не облегчает
|
|||
4
Fragster
гуру
13.08.21
✎
17:18
|
||||
5
Fragster
гуру
13.08.21
✎
17:18
|
хотя может в бсп какие-то облегчалки есть для этого
|
|||
6
polosov
13.08.21
✎
17:20
|
||||
7
Shur1cIT
13.08.21
✎
17:26
|
спасибо, проще вариантов нет?
|
|||
8
Fragster
гуру
13.08.21
✎
17:28
|
(6) этот хороший, да.
|
|||
9
Вафель
13.08.21
✎
17:32
|
(8) Эхх, я как то тебя более спортивным представлял
|
|||
10
Shur1cIT
13.08.21
✎
17:36
|
это не оно?
https://its.1c.ru/db/metod8dev#content:5917:hdoc:http-messages если в этом примера буду свой файл помещать сработает? обязательно Content-Type задавать для файла? у меня разные могут быть |
|||
11
rozer76
13.08.21
✎
17:46
|
(10) ну да попробуй покури "Поток" https://wonderland.v8.1c.ru/blog/novye-instrumenty-dlya-raboty-s-dvoichnymi-dannymi-obespechivayut-kak-posledovatelnyy-dostup-k-danny/
|
|||
12
Вафель
13.08.21
✎
17:47
|
(10) такой юзай
application/octet-stream |
|||
13
polosov
13.08.21
✎
17:48
|
(10) Да, это оно. Пробуй.
|
|||
14
Shur1cIT
13.08.21
✎
17:50
|
ок спасибо
|
|||
15
rozer76
13.08.21
✎
18:38
|
Только причем тут мультипарт? Если читать мультипарт то да, это непросто. Нет разных типов данных которые нужно писать, нет разделителей - обычные двоичные данные и УстановитьТелоИзДвоичныхДанных() должно прокатить
|
|||
16
Shur1cIT
13.08.21
✎
22:29
|
Почти разобрался, это код рабочий, но грузит корректно только pdf файлы, картинки и exel не читаемы на портале, при этом если руками на портал гуду то все окей
Поток = Новый ПотокВПамяти(); ЗаписьДанных = Новый ЗаписьДанных(Поток); ЗаписьДанных.ЗаписатьСтроку("Content-Disposition: form-data; name=""; filename=" + ИмяФайла); ЗаписьДанных.ЗаписатьСтроку("Content-Type: application/octet-stream"); ЗаписьДанных.ЗаписатьСтроку(""); ЗаписьДанных.Записать(Файл); // файл - это двоичные данные ЗаписьДанных.Закрыть(); ФайлДвоичныеДляОтправики = Поток.ЗакрытьИПолучитьДвоичныеДанные(); HTTPЗапрос.УстановитьТелоИзДвоичныхДанных(ФайлДвоичныеДляОтправики); Результат = Соединение.ОтправитьДляОбработки(HTTPЗапрос); ТелоОтвета = Результат.ПолучитьТелоКакСтроку(); Возврат Результат.КодСостояния |
|||
17
Shur1cIT
13.08.21
✎
22:35
|
Нужно понять почему ему только PDF нравится может это связано с application/octet-stream? или не влияет?
|
|||
18
Shur1cIT
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); ВесьФайлОднойСтрокой = Файл.Прочитать(); Файл.Закрыть(); |
|||
21
Shur1cIT
16.08.21
✎
10:50
|
(20) спасибо, это немного не то
|
|||
22
ДенисЧ
16.08.21
✎
11:05
|
(19) А что, в заголовках нельзя было сказать, что не Accept gzip?
Обычно сервера такое понимают. |
|||
23
бегинер
16.08.21
✎
12:45
|
(19) неа, там и в описании поставщика api даже не было написано что ответ в gzip отдается :) сделали как смогли
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |