|
http-сервис не может извелечь файлы из архива. | ☑ | ||
|---|---|---|---|---|
|
0
ikea
29.06.26
✎
14:35
|
Дано: 1С 8.3.24.1368 файловая база, обычные формы. В ней опубликован http-сервис на apache 2.4
Http-сервис получает данные, вызывает общий модуль (галочки стоят "сервер" и "клиент обычное приложение", "вызов сервера"). В нем следующий код: Поток = Новый ПотокВПамяти(); ДД = Base64Значение(Данные); ДД.Записать(Поток); Каталог = КаталогВременныхФайлов(); Архив = Новый ЧтениеZipФайла(Поток, Пароль); Если Архив.Элементы.Количество() = 0 Тогда Возврат Неопределено; КонецЕсли; Архив.Извлечь(Архив.Элементы[0], Каталог, РежимВосстановленияПутейФайловZIP.НеВосстанавливать); ПолноеИмяФайла = Каталог + Архив.Элементы[0].Имя; Архив.Закрыть(); При попытке выполнения Архив.Извлечь() вываливается в исключение. Права на КаталогВременныхФайлов() полные. Код рабочий - если запустить под пользователем, все работает. Тот же http-сервис двоичные данные в архив записать может. Т.е. следующий код работает: ДД = Base64Значение(Данные); ПутьАрхива = КаталогВременныхФайлов() + "temp_archive.zip"; ДД.Записать(ПутьАрхива); Может есть у кого мысли куда копать? |
|||
|
1
maxab72
29.06.26
✎
14:37
|
А какой текст ошибки возвращает исключение?
|
|||
|
2
Галахад
гуру
29.06.26
✎
14:40
|
Может не успевает записать?
|
|||
|
3
ikea
29.06.26
✎
14:44
|
(1) ОписаниеОшибки() возвращает "".
|
|||
|
4
maxab72
29.06.26
✎
14:45
|
значит ошибка где-то не внутри 1с. например, пароль к архиву кривой, или архив содержит файлы в папках, и есть с одинаковыми именами, а ты разархивируешь без структуры и т.п.
|
|||
|
5
ikea
29.06.26
✎
14:47
|
(2) Архив же успевает записать.
Пробовал смотреть через отладчик. Там-то времени точно должно хватить. |
|||
|
6
ikea
29.06.26
✎
14:48
|
(4) Скопировал весь код во внешнюю обработку, запустил под обычным пользователем. Все работает отлично.
|
|||
|
7
maxab72
29.06.26
✎
14:55
|
(6) а попробуй заменить ЧтениеZIPфайла на ЧтениеФайлаАрхива
|
|||
|
8
arsik
гуру
29.06.26
✎
14:59
|
(0) Так у тебя в КаталогВременныхФайлов() уже есть наверно файлы с именами из архива.
|
|||
|
9
Tatitutu
29.06.26
✎
15:27
|
там в справке обидное написано
ЧтениеZipФайла (ZipFileReader) На основании имени файла Не рекомендуется использовать, начиная с версии 8.3.26. |
|||
|
10
arsik
гуру
29.06.26
✎
15:30
|
+ (8) Архив.Извлечь(Архив.Элементы[0], Каталог, РежимВосстановленияПутейФайловZIP.НеВосстанавливать);
Тут еще пароль надо, если у тебя архив с паролем |
|||
|
11
ikea
29.06.26
✎
15:34
|
(4) Был прав. Спасибо большое за наводку!
Все дело было в пароле, а точнее в ДЛИНЕ пароля. Длину пароля больше 12 символов http-сервис не переваривает. |
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |