| 
    
            
         
         | 
    
  | 
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 отдается :)  сделали как смогли     
         | 
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |