Использование unzip-модуля с помощью NPM:
При преобразовании имя преобразованного файла будет doc.xml
, поскольку распакован xml файл.
Не хотите имя doc
, так вот:
'use strict';
var fs = require('fs')
var unzip = require('unzip')
convert(process.argv[2], process.argv[3])
function convert(path, fileName) {
fs.createReadStream(path)
.pipe(unzip.Extract({ path: '/users/*****/desktop/templatexml/' + fileName + '.xml' }))
}
И запустил это:
node /Users/*****/Desktop/converter/converter.js /Users/******/Desktop/template/103.zip 103
Но результатом всегда будет "fileName.xml/doc.xml"
"fileName.xml"
отображается как имя каталога.
Хотите изменить часть doc
.
И если возможно, захотите получить имя файла из исходного пути к файлу.
Внутри process.argv [2]
"/Users/*****/Desktop/template/fileName.zip"
Хотите получить имя_файла здесь.
Спасибо за комментарий, вот так. Но не получилось.
'use strict';
var fs = require('fs')
var unzip = require('unzip')
convert(process.argv[2])
function convert(path) {
fs.createReadStream(path)
.pipe(unzip.Parse())
.on('entry', function(entry) {
var fileName = entry.path;
var type = entry.type; // 'Directory' or 'File'
var size = entry.size;
if (fileName === "this IS the file I'm looking for") {
entry.pipe(fs.createWriteStream('/users/*****/desktop/templatexml/'));
} else {
entry.autodrain();
}
});
}
fs.createReadStream('path/to/archive.zip')
.pipe(unzip.Parse())
.on('entry', function (entry) {
var fileName = entry.path;
var type = entry.type; // 'Directory' or 'File'
var size = entry.size;
if (fileName === "this IS the file I'm looking for") {
entry.pipe(fs.createWriteStream('output/path'));
} else {
entry.autodrain();
}
});