【问题标题】:How to serve image raw binary data in nodejs如何在nodejs中提供图像原始二进制数据
【发布时间】:2019-01-04 17:11:53
【问题描述】:

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

【问题讨论】:

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


    【解决方案1】:

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

    【讨论】:

    • 这是一个普通的 nodejs 应用程序。不使用快递。
    【解决方案2】:

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

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

    【讨论】:

      猜你喜欢
      • 2012-11-30
      • 1970-01-01
      • 2010-11-27
      • 2013-07-02
      • 1970-01-01
      • 2011-05-29
      • 1970-01-01
      • 1970-01-01
      • 2011-01-06
      相关资源
      最近更新 更多