首页 >web前端 >js教程 >如何在不使用外部库的情况下在 Node.js 中下载文件?

如何在不使用外部库的情况下在 Node.js 中下载文件?

Linda Hamilton
Linda Hamilton原创
2024-12-13 09:16:14709浏览

How Can I Download Files in Node.js Without Using External Libraries?

无需外部库即可在 Node.js 中下载文件

Node.js 中的文件下载可以本地完成,无需依赖外部库。操作方法如下:

使用内置 Fetch API(Node 18)

Node 18 引入了实现 Fetch API 的 fetch 全局变量。该API提供下载数据的方法,包括文本、JSON和二进制数据。例如:

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

const url = 'http://example.com/file.jpg';
const response = await fetch(url);
const buffer = await response.arrayBuffer();

fs.writeFileSync('filename.jpg', Buffer.from(buffer));

使用 HTTP GET 请求(较旧的 Node 版本)

在 Node 18 之前,您可以创建 HTTP GET 请求并将其响应通过管道传输到文件流:

const http = require('http');
const fs = require('fs');

const file = fs.createWriteStream('file.jpg');
const url = 'http://i3.ytimg.com/vi/J---aiyznGQ/mqdefault.jpg';
const request = http.get(url, (response) => {
  response.pipe(file);
});

// Close file stream after download completes
file.on('finish', () => {
  file.close();
  console.log('Download completed');
});

配置命令行选项

如果您需要命令行选项,例如指定目标文件或 URL,您可以使用 Commander 等软件包进行自定义:

const program = require('commander');

program
  .option('-o, --output <file>', 'Output file name')
  .option('-u, --url <url>', 'URL to download from')
  .parse(process.argv);

const file = fs.createWriteStream(program.output || 'default.jpg');
const request = http.get(program.url, (response) => {
  response.pipe(file);
});

有关更多详细信息和其他方法,请参阅以下资源:https://sebhastian.com/nodejs-download-file/

以上是如何在不使用外部库的情况下在 Node.js 中下载文件?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn