axios stream
时间: 2025-02-24 15:32:59 浏览: 40
### 使用 Axios 实现流式传输
为了在 JavaScript 或 Node.js 中使用 Axios 进行流式传输,可以利用 `responseType` 设置为 `'stream'` 来处理响应数据作为流。下面是一个具体的例子来展示如何操作:
```javascript
const fs = require('fs');
const axios = require('axios');
// 创建一个写入文件的可写流
const writer = fs.createWriteStream('./output.mp4');
// 发起请求并设置 responseType 为 stream
axios({
method: 'get',
url: 'http://example.com/large-file.mp4', // 替换成实际的大文件URL
responseType: 'stream'
})
.then(response => {
// 将响应的数据管道到文件系统的写入流中
response.data.pipe(writer);
return new Promise((resolve, reject) => {
writer.on('finish', resolve);
writer.on('error', reject);
});
}).catch(error => {
console.error(`下载失败 ${error}`);
});
```
此代码片段展示了如何通过 Axios 下载大文件并将内容直接保存至本地磁盘而不必先加载整个文件进入内存[^1]。
对于更复杂的场景比如上传文件时也可以采用类似的思路创建读取流并通过配置项 `data` 提供给 Axios 请求对象:
```javascript
const fs = require('fs');
const path = require('path');
const axios = require('axios');
let fileStream = fs.createReadStream(path.resolve(__dirname,'./largefile.zip'));
axios.post(
"http://localhost/upload",
fileStream,
{
headers: {'Content-Type': 'multipart/form-data'}
}
).then(res=>{
console.log("Upload successful");
}).catch(err=>console.error("Error during upload",err));
```
上述实例说明了怎样把本地的一个大型压缩包以流的形式发送出去完成HTTP POST提交动作。
阅读全文
相关推荐


















