Извлечь один файл из удаленного потока по конвейеру для unzip.Parse () с помощью NodeJs без чтения всего потока

Я использую «torrent-stream» NodeJs, чтобы открыть поток в торрент-файл, затем выбрать целевой Zip-файл и передать поток целевого файла в поток UnZip.

let torrentStream = require("torrent-stream");
let unzip = require("unzip-stream");

let engine = torrentStream(torrentMagentURL);
engine.on("ready", () => {
    //select the target zip file
    let file = engine.files[0]; 
    //open a stream to the remote zip file from torrent connection
    let stream = file.createReadStream();
    //pip the remote file to a Zip reader
    let zip = stream.pipe(unzip.Parse());
    //listen to every entry parsed from the zip file
    zip.on("entry", entry => {
            // the problem is here :: 
            // for the every entry in the zip file 
            // this call back wont be called unless 
            // all the content of the previous entry 
            // in the zip file are downloaded

            // what I really need is to SEEK to the next entry 
            // NOT download the previous entry entirely before 
            // seek to the next one. 
            // because mostly the needed file to be downloaded 
            // from the zip file wont be the first entry.

            // noting that "torrent-stream" support seeking 
            // in its remote stream.
    })
})
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
1
0
290
1

Ответы 1

Из документов unzip-stream похоже, что вы можете вызвать autodrain (), чтобы игнорировать любые записи, которые вы не используете, и перейти к следующей записи. https://www.npmjs.com/package/unzip-stream

zip.on("entry", entry => {
  if (entry.path !== 'path/filename.ext') {
      entry.autodrain();
  } else {
    // Process the entry
  }
})

Другие вопросы по теме