Node.js 中通过 http.ServerResponse 发送二进制 Buffer 到客户端

作者:编程家 分类: 编程代码 时间:2025-12-18

Node.js 中通过 http.ServerResponse 发送二进制 Buffer 到客户端

在 Node.js 中,我们可以使用 http.ServerResponse 对象来向客户端发送响应。除了发送文本数据外,有时候我们还需要发送二进制数据,比如图片、音频或视频等。在这种情况下,我们可以使用 Buffer 对象来处理和发送二进制数据。

使用 Buffer 发送二进制数据

在 Node.js 中,Buffer 是一个全局对象,用于处理二进制数据。它可以存储和操作各种类型的数据,包括字节数组、图片和文件等。

要发送二进制数据到客户端,我们首先需要创建一个 Buffer 对象。可以通过传递一个字节数组或字符串到 Buffer 构造函数来创建一个 Buffer 对象。然后,我们可以使用 http.ServerResponse 对象的 write 方法将 Buffer 对象发送给客户端。

下面是一个简单的例子,演示如何发送一个包含图片数据的 Buffer 对象到客户端:

javascript

const http = require('http');

const fs = require('fs');

http.createServer((req, res) => {

// 读取图片文件

fs.readFile('path/to/image.jpg', (err, data) => {

if (err) {

res.statusCode = 500;

res.end('Internal Server Error');

return;

}

// 设置响应头

res.setHeader('Content-Type', 'image/jpeg');

res.setHeader('Content-Length', data.length);

// 发送图片数据

res.write(data);

res.end();

});

}).listen(3000, () => {

console.log('Server is running on port 3000');

});

在上面的例子中,我们使用 fs 模块的 readFile 方法读取图片文件,并将读取到的数据存储在一个 Buffer 对象中。然后,我们设置响应头的 Content-Type 为 image/jpeg,并将 Buffer 对象的长度设置为 Content-Length。最后,我们使用 http.ServerResponse 对象的 write 方法发送图片数据到客户端,并调用 end 方法结束响应。

通过使用 Buffer 对象,我们可以轻松地发送二进制数据到客户端。在发送二进制数据之前,我们需要创建一个 Buffer 对象并设置相应的响应头。然后,使用 http.ServerResponse 对象的 write 方法将 Buffer 对象发送给客户端。

在开发过程中,我们可能需要发送不同类型的二进制数据,比如图片、音频或视频等。根据需要,我们可以使用不同的 Content-Type 和 Content-Length 来设置响应头。

使用 Node.js 发送二进制数据到客户端非常简单,而且非常有用。通过掌握发送二进制数据的方法,我们可以更好地处理和交付各种类型的数据到客户端。