Вход | Регистрация
 
1С:Предприятие :: 1С:Предприятие 8 общая

Объект для записи ZIP-архива в поток.

Объект для записи ZIP-архива в поток.
Я
   mistergluck
 
25.02.21 - 17:53
Всем привет, на сайте ИТС
https://its.1c.ru/db/execobj202020#content:710:hdoc:записьzip-zipwriter
Нашел такой метод: (но конфигуратор не понимает такой код, да и сам объект ЗаписьZip)
Это планируется сделать в будущих версиях или что-то можно подключить, как в с# какую нибудь библиотеку

ЗаписьZip (ZipWriter)
Объект для записи ZIP-архива в поток.

Пример
метод СформироватьАрхив(Каталог: Файл, ВыходнойАрхив: Файл)
    исп ПотокЗаписи = ВыходнойАрхив.ОткрытьПотокЗаписи()
    пер ЗаписьZip = новый ЗаписьZip(ПотокЗаписи, "password",
        УровеньСжатияZip.Нормальный, МетодШифрованияZip.Aes256)
    
    для Файл из Каталог.Дочерние
        если Файл.Расширение == "doc"
            ЗаписьZip.Добавить(Файл.ОткрытьПотокЧтения(), Файл.Имя)
        ;
    ;

    ЗаписьZip.Записать()
;
   ДенисЧ
 
1 - 25.02.21 - 17:54
ЗаписьZipФайла (ZipFileWriter)
На основании потока
Синтаксис:
Новый ЗаписьZipФайла(<Поток>, <Пароль>, <Комментарий>, <МетодСжатия>, <УровеньСжатия>, <МетодШифрования>)

Когда копируешь - внимательней надо быть )))
   polosov
 
2 - 25.02.21 - 17:57
(0) Ты смотришь язык 1С:Исполнителя.
   mistergluck
 
3 - 25.02.21 - 17:57
(1) зайдите по ссылке на итс
   mistergluck
 
4 - 25.02.21 - 18:00
(2) Жаль.
Может кто знает тогда как поместить в Архив (в поток)
ЗаписьZip.Добавить(Файл.ОткрытьПотокЧтения(), Файл.Имя)

Двоичные данные из другого потока?
   polosov
 
5 - 25.02.21 - 18:01
(4) Ты наркоман?
См. (1)
   mistergluck
 
6 - 25.02.21 - 18:04
(5) Хотел, что-то вроде такого:

    Поток = новый ПотокВПамяти();
    ЗаписьТекста = новый ЗаписьДанных(Поток,"CESU-8",,,Символы.ПС);
    ЗаписьТекста.ЗаписатьСимволы("Пусть бегут неуклюже пешеходы по лужам А вода по асфальту рекой И не ясно прохожим в этот день непогожий Почему я веселый такой");
    
    ЗаписьТекста.Закрыть();

    ДвоичныеДанные = Поток.ЗакрытьИПолучитьДвоичныеДанные();
    
    
    
    ПотокZIP = новый ПотокВПамяти();
                      ZipWriter
        Сжатие = новый ЗаписьZipФайла(ПотокZIP,,,,  УровеньСжатияZIP.Максимальный);
        
        Сжатие.Добавить(Поток, РежимСохраненияПутейZIP.НеСохранятьПути);
        Сжатие.Записать();
   polosov
 
7 - 25.02.21 - 18:05
(6) Да кто же тебя за руки то держит...
   mistergluck
 
8 - 25.02.21 - 18:07
(7) ругается Сжатие.Добавить(Поток, РежимСохраненияПутейZIP.НеСохранятьПути);
Пробовал и так
        Сжатие.Добавить(ДвоичныеДанные.ОткрытьПотокДляЧтения(), РежимСохраненияПутейZIP.НеСохранятьПути);

Некорректное имя файла: Поток
по причине:
Файл не обнаружен 'Поток'. 2(0x00000002): Не удается найти указанный файл.
   polosov
 
9 - 25.02.21 - 18:14
(8) Изначально что хочешь сделать?
Не с http-сервисами ли работаешь?
   mistergluck
 
10 - 25.02.21 - 18:18
(9) да
   polosov
 
11 - 25.02.21 - 18:21
(10) А дальше что?
Хочешь в gzip запихать свою байтики?
   mistergluck
 
12 - 25.02.21 - 18:23
(11) да, есть код, который это делает, но записывает во временный файл. Хотел исключить запись на диск
   polosov
 
13 - 25.02.21 - 18:25
(12) Не получится. Метод Добавить() у ЗаписьZipФайла ожидает только имени файла.
   sitex
 
14 - 25.02.21 - 20:40
(0) Если ты хочет упаковать в HTTP запрос со сжатием GZIP средствами 1С то гугли -> gzip deflate 1C.

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