построение модуля загрузки узлов средней сложности - PullRequest
0 голосов
/ 20 марта 2020

Я собираю модуль для загрузки приложения Electron Node, хочу попробовать node-fetch и задать несколько вопросов.

  1. Как я могу получить общий размер файла, чтобы я мог реализовать прогресс?
  2. Как я могу приостановить / возобновить / отменить загрузку?

Также приветствуются примеры использования других библиотек кроме request или axios! Спасибо!

Вот что у меня есть:

const fetch = require('node-fetch');
const fs = require('fs');

const url = 'https://images.pexels.com/photos/45201/kitty-cat-kitten-pet-45201.jpeg?auto=compress&cs=tinysrgb&dpr=2&h=650&w=940'

async function download() {
  const nfetch = await fetch(url);

  const fileStream = fs.createWriteStream('./octocat.png');
  nfetch.body.pipe(fileStream);

  nfetch.body.on("response", (data) => {
    console.log('response ???');
  });

  nfetch.body.on("data", (chunk) => {
    console.log(chunk.length);
  });

  nfetch.body.on("error", (err) => {
    console.log('err:', err)
  });

  fileStream.on("finish", function () {
    console.log('finish');
  });
}

download();

1 Ответ

2 голосов
/ 20 марта 2020
  1. nfetch.headers содержит заголовок с именем Content-Length - Размер изображения

  2. nfetch.body - читаемый поток документы , поэтому вы можете использовать методы: pause(), resume(), destroy()

...