0

我的 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));
4

2 回答 2

0

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

于 2019-01-05T00:27:56.540 回答
0

代替 fs.readFile,使用 fs.createReadStream 并管道处理适用于图像的块。

let frstream = fs.createReadStream(url);
        response.statusCode = "200";
        response.setHeader("Content-Type", "image/jpeg");
        frstream.pipe(response);
于 2019-01-05T21:47:36.107 回答