|
|
http-сервис не может извелечь файлы из архива.
ikea, Greeen, , laeg, serkorvin11, Кир Пластелинин, oleg_km, Hawk_1c, crotnn, YFedor, Fragster, Михаил Козлов, sea1956, Шурик71, A_G, MM, viraboy, calmius, Timon1405, Галахад, reg0303, formista2000, zuza, Кирпич, Chameleon1980, LoreLeii, toypaul, RVN, zenik, yurikmellon2, arsik, vbus, alexxx961503, maxab72, Garykom, Доминошник, АгентБезопаснойНацио, VladZ, 2S, obs191, Indian, Tatitutu, banco, Lama12, Crusher, sikuda, Bad_Aleks, Vstur, p-soft, Федя Тяпкин, denk, torgm, LuckyStar, Мультук, U4Me2, Rovan, mTema32, JohnGilbert, H A D G E H O G s, Dedal, vis, palsergeich
| ☑ |
|
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-сервис не переваривает.
|
|