|
Архивирование - ЗаписьZIPФайла | ☑ | ||
---|---|---|---|---|
0
kisobol
12.08.15
✎
03:58
|
Подскажите, в табличной части задаются пути к данным которые нужно за архивировать, если указать файлы то данные копируются, но если указать напрямую папку с файлами, то создается пустой архив.
&НаКлиенте Процедура Архивировать(Команда) Архив = Новый ЗаписьZIPФайла(Объект.ПутьКудаКопировать+"\"+"Архив"+".zip", "Пароль", "Комментарий", МетодСжатияZIP.Сжатие, УровеньСжатияZIP.Максимальный, МетодШифрованияZIP.Zip20); Для Каждого СтрокаТЧ ИЗ Объект.ТабОткудаКопировать Цикл //обходим табличную часть, в ней строки с путем где лежат файлы Архив.Добавить(СтрокаТЧ.ПутьОткудаКопировать, РежимСохраненияПутейZIP.СохранятьПолныеПути, РежимОбработкиПодкаталоговZIP.ОбрабатыватьРекурсивно); КонецЦикла; Архив.Записать(); Сообщить("Заархивировал"); КонецПроцедуры |
|||
1
Снежный человек
12.08.15
✎
04:39
|
<РекурсивнаяОбработкаПодпапок> (необязательный)
Тип: РежимОбработкиПодкаталоговZIP. В случае добавления файлов по маске обрабатывать дополнительно подкаталоги. Значение по умолчанию: НеОбрабатывать. РежимОбработкиПодкаталоговZIP (ZIPSubDirProcessingMode) Значения НеОбрабатывать (DontProcess) ОбрабатыватьРекурсивно (ProcessRecursively) Описание: Содержит варианты обработки масок файлов в именах для упаковки в ZIP архив. |
|||
2
kisobol
12.08.15
✎
04:42
|
Пробовал и так и так
НеОбрабатывать (DontProcess) ОбрабатыватьРекурсивно (ProcessRecursively) Все равно архив пустой |
|||
3
Снежный человек
12.08.15
✎
04:43
|
(2) используй rar, жмет лучше и проще с ним.
|
|||
4
kisobol
12.08.15
✎
04:47
|
На системе нет рара =(
Нужно извратиться с зипом. |
|||
5
ASV
12.08.15
✎
04:48
|
Архив.Добавить(СтрокаТЧ.ПутьОткудаКопировать+'\*', РежимСохраненияПутейZIP.СохранятьПолныеПути,
РежимОбработкиПодкаталоговZIP.ОбрабатыватьРекурсивно); |
|||
6
kisobol
12.08.15
✎
06:35
|
ASV, да работает с папками. Но теперь к расширению файла прибавляется \ и вываливается
{Справочник.МестоБекапа.Форма.ФормаЭлемента.Форма(73)}: Ошибка при вызове метода контекста (Добавить) Архив.Добавить(СтрокаТЧ.ПутьОткудаКопировать+"\", РежимСохраненияПутейZIP.СохранятьОтносительныеПути, по причине: Некорректное имя файла: file://E:\upload.xml\* по причине: Неправильный путь к файлу 'file://E:\upload.xml\*'. 123(0x0000007B): Синтаксическая ошибка в имени файла, имени папки или метке тома. |
|||
7
ЧеловекДуши
12.08.15
✎
06:38
|
Строчка "Добавить" и добавляет в пакет архива все файлы.
Соизволь в цикле пройтись по всем нужным файлам :) |
|||
8
ЧеловекДуши
12.08.15
✎
06:39
|
(6) Это ДНК, не излечимо :)
|
|||
9
kisobol
12.08.15
✎
06:44
|
Так циклом прохожусь, он добавляет все папки с содержимым в архив, но казлит именно на отдельных файлах.
|
|||
10
ЧеловекДуши
12.08.15
✎
06:57
|
(9) Ты добавь проверочку
Файл = Новый Файл(ПутьКФайлу); Файл.ЭтоФайл() Или Файл.ЭтоКаталог() Как вам угодно :) |
|||
11
ЧеловекДуши
12.08.15
✎
06:57
|
(9) И лишний наклонную не проставляй, если это не каталог или если это файл :)
|
|||
12
kisobol
12.08.15
✎
07:20
|
Спасибо за пинок.
&НаКлиенте Процедура Архивировать(Команда) Архив = Новый ЗаписьZIPФайла(Объект.ПутьКудаКопировать+"\"+"Архив"+".zip", "Пароль", "Комментарий", МетодСжатияZIP.Сжатие, УровеньСжатияZIP.Максимальный, МетодШифрованияZIP.Zip20); Для Каждого СтрокаТЧ ИЗ Объект.ТабОткудаКопировать Цикл //обходим табличную часть, в ней строки с путем где лежат файлы Файл = Новый Файл(СтрокаТЧ.ПутьОткудаКопировать); Если Файл.ЭтоФайл() Тогда Архив.Добавить(СтрокаТЧ.ПутьОткудаКопировать, РежимСохраненияПутейZIP.СохранятьОтносительныеПути, РежимОбработкиПодкаталоговZIP.ОбрабатыватьРекурсивно); Иначе Архив.Добавить(СтрокаТЧ.ПутьОткудаКопировать+"\", РежимСохраненияПутейZIP.СохранятьОтносительныеПути, РежимОбработкиПодкаталоговZIP.ОбрабатыватьРекурсивно); КонецЕсли; КонецЦикла; Архив.Записать(); Сообщить("Заархивировал"); КонецПроцедуры |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |