Получение данных из ZIP-файла - NodeJS - PullRequest
0 голосов
/ 26 ноября 2018

Я задал себе вопрос,

Я могу читать файлы (в основном csv) на облачной платформе, но когда это почтовый индекс, я просто получаю кучу:

j�\lȜ��&��3+xT��J��=��y��7���vu�  {d�T���?��!�

Чтонормально, так что мне интересно, есть ли способ поместить это в переменную и разархивировать, используя lib или что-то в этом роде.

Спасибо за ваше время

Ответы [ 2 ]

0 голосов
/ 26 ноября 2018

Вы должны использовать пакет jszip npm.Это позволяет быстро читать zip-файлы.

Пример:

var fs = require("fs");
var JSZip = require("jszip");


    // read a zip file
    fs.readFile("project.zip", function(err, data) {
        if (err) throw err;
        JSZip.loadAsync(data).then(function (zip) {
          files = Object.keys(zip.files);
          console.log(files);
        });
    });

To read the contents of a file in the zip archive you can use the following. 

    // read a zip file
    fs.readFile("project.zip", function(err, data) {
        if (err) throw err;
        JSZip.loadAsync(data).then(function (zip) {

          // Read the contents of the 'Hello.txt' file
          zip.file("Hello.txt").async("string").then(function (data) {
            // data is "Hello World!"
            console.log(data);
          });

        });
    });

и загружать zip-файлы с сервера:

request('yourserverurl/helloworld.zip')
  .pipe(fs.createWriteStream('helloworld.zip'))
  .on('close', function () {
    console.log('File written!');
 });
0 голосов
/ 26 ноября 2018

Вы должны использовать npm install node-stream-zip

const StreamZip = require('node-stream-zip');
const zip = new StreamZip({
    file: 'archive.zip',
    storeEntries: true
});

и получить такую ​​информацию

zip.on('ready', () => {
    console.log('Entries read: ' + zip.entriesCount);
    for (const entry of Object.values(zip.entries())) {
        const desc = entry.isDirectory ? 'directory' : `${entry.size} bytes`;
        console.log(`Entry ${entry.name}: ${desc}`);
    }
    // Do not forget to close the file once you're done
    zip.close()
});

Надеюсь, это поможет: -)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...