如何在Node.js中提供图片原始二进制数据

时间:2019-01-04 17:11:54

标签: node.js buffer readfile binary-data nodejs-stream

我的html中有一个img标记,用于从nodejs服务器请求图像。在我的服务器js文件中,我具有以下代码来发送图像响应,但是我发现数据未在客户端呈现。有什么建议吗?

const getFile = (filePath) => {
    return new Promise((resolve, reject) => {
        fs.readFile(filePath, (error, data) => {
            if (!error) {
                resolve(data);
            } // enter code here
            else reject(error);
        });
    });
};

getFile(test.jpg).then((data) => {
    response.statusCode = "200";
    response.setHeader("Content-Type", "image/jpg");
    response.end(data, "base64"); // Also tried response.end(data, "binary")
})
.catch(error => console.log(error));

2 个答案:

答案 0 :(得分:0)

这是Express应用程序吗?如果是这样,最好的选择是使用static middleware。将所有静态(二进制)文件放在一个文件夹中,用静态中间件公开,然后以这种方式加载。

答案 1 :(得分:0)

使用fs.createReadStream而不是fs.readFile并传递用于图像的块。

let frstream = fs.createReadStream(url);
        response.statusCode = "200";
        response.setHeader("Content-Type", "image/jpeg");
        frstream.pipe(response);