构建一个中等复杂度的节点下载模块
building a node download module with moderate complexity
我正在为 Electron Node 应用程序构建一个下载模块,想尝试 node-fetch
并有几个问题。
- 如何获得总文件大小以便我可以执行进度?
- 如何pause/resume/cancel下载?
还有使用其他库的示例 except 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();
nfetch.headers
包含 header 称为 Content-Length - 图片大小
nfetch.body
是可读流 docs,
所以你可以使用这些方法:pause()
、resume()
、destroy()
我正在为 Electron Node 应用程序构建一个下载模块,想尝试 node-fetch
并有几个问题。
- 如何获得总文件大小以便我可以执行进度?
- 如何pause/resume/cancel下载?
还有使用其他库的示例 except 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();
nfetch.headers
包含 header 称为 Content-Length - 图片大小nfetch.body
是可读流 docs, 所以你可以使用这些方法:pause()
、resume()
、destroy()