node.js axios 下载文件流和 writeFile

作者:编程家 分类: 编程代码 时间:2025-10-07

使用Node.js的axios库可以方便地进行HTTP请求,包括下载文件流和写入文件。本文将介绍如何使用axios下载文件流,并使用writeFile函数将其保存到本地。

首先,我们需要安装axios库。可以使用npm命令来安装:

shell

npm install axios

安装完成后,我们可以在代码中引入axios库:

javascript

const axios = require('axios');

const fs = require('fs');

接下来,我们可以使用axios发送HTTP请求来获取文件流。假设我们要下载的文件的URL是`http://example.com/file.pdf`,我们可以使用axios的`get`方法来发送GET请求,并设置`responseType`为`stream`:

javascript

axios.get('http://example.com/file.pdf', { responseType: 'stream' })

.then((response) => {

// 处理文件流

})

.catch((error) => {

console.log(error);

});

在上述代码中,`responseType`指定了响应的数据类型为流,这样我们就可以获取到文件的二进制数据流。

接下来,我们可以使用Node.js的`fs`模块的`createWriteStream`函数创建一个可写流,并将文件流写入到本地文件中。假设我们要将文件保存为`file.pdf`,我们可以使用以下代码:

javascript

const writer = fs.createWriteStream('file.pdf');

response.data.pipe(writer);

writer.on('finish', () => {

console.log('文件保存成功');

});

writer.on('error', (err) => {

console.log('文件保存失败', err);

});

在上述代码中,我们使用`response.data.pipe(writer)`将文件流写入到本地文件中。当写入完成时,会触发`finish`事件;如果发生错误,会触发`error`事件。

通过以上代码,我们可以实现使用axios下载文件流并保存到本地的功能。可以根据实际需求修改文件的URL和保存的文件名。

案例代码:

javascript

const axios = require('axios');

const fs = require('fs');

axios.get('http://example.com/file.pdf', { responseType: 'stream' })

.then((response) => {

const writer = fs.createWriteStream('file.pdf');

response.data.pipe(writer);

writer.on('finish', () => {

console.log('文件保存成功');

});

writer.on('error', (err) => {

console.log('文件保存失败', err);

});

})

.catch((error) => {

console.log(error);

});

本文介绍了如何使用Node.js的axios库下载文件流并保存到本地。通过设置axios的`responseType`为`stream`,我们可以获取到文件的二进制数据流。然后,使用`fs`模块的`createWriteStream`函数将文件流写入到本地文件中。以上方法可以帮助我们在Node.js环境中方便地进行文件下载操作。