@Fox said in Разархивировать zip без скачивания на диск.:
Через ноду, например через вот этот модуль https://www.npmjs.com/package/node-zip
Скачал модуль. Копирую из мануала:
var zip = new require('node-zip')(data, {base64: false, checkCRC32: true});
console.log(zip.files['test.file']); // Hello there
В моём случае это:
var zip = new require('node-zip')("ZIP/1.zip", {base64: false, checkCRC32: true});
console.log(zip.files['"ZIP/1.zip"']);
Выдаёт в логе "Error: Can't find end of central directory : is this a zip file ? If it is, see http://stuk.github.io/jszip/documentation/howto/read_zip.html".
Смысл ошибки - он не распознаёт файл архива как архив?
И даёт ссылку уже на другой (?) пакет JSZip, где ещё всё более загадочно.
- Если считать файл в переменную FILE_CONTENT обычным способом, то получаем ошибку:
Error: End of data reached (data length = 27585, asked index = 28669). Corrupted zip ?
При коде:
var zip = new require('node-zip')([[FILE_CONTENT]], {base64: false, checkCRC32: true});
- Если считать файл в переменную FILE_CONTENT как Base64, то первая команда вроде бы работает:
var zip = new require('node-zip')([[FILE_CONTENT]], {base64: true, checkCRC32: true});
console.log(zip.files['test.file']); // Hello there
Некоторое время висит-работает, потом выдаёт в лог Undefined.
В этом случае не понятно, куда он распаковывает эти файлы, если распаковывает.
...
В сухом остатке, если есть под рукой тестовый скрипт разархивации Zip через Ноду (Не на лету, а обычным способом со скачиванием) - думаю, многим будет актуально.