【问题标题】:Serve images using express or send binary data to client使用 express 提供图像或将二进制数据发送到客户端
【发布时间】:2019-12-09 12:36:55
【问题描述】:

我不确定关于显示存储在 MongoDB 数据库中的图像的最佳做法。

我有一个用户通过 React 上传图像,然后通过 API 调用将其发送到快速服务器。然后我使用 multer 获取缓冲区数据并将其发送到 MongoDB。

目前,为了在前端显示图像,我使用 express 来提供图像。这意味着我可以通过输入 'http://localhost:3000/api/image/image_id

访问 mongo 中的任何图像

前面说了这么多。我有一个 API 调用,它获取所有图像 ID,然后使用它们创建链接。像这样。

constructor(props) {
    super(props)
    this.state = {
        imgID: ''
    }
}

render() {
    return (
        <img src={"http://localhost:3000/api/image/" + this.state.imgID} />
     )
}

我的问题是,这是否是一个好习惯,或者我应该向客户端发送二进制数据并最终呈现它?

【问题讨论】:

    标签: node.js reactjs mongodb express mongoose


    【解决方案1】:

    最佳做法是通过提供 URL 而不是发送二进制数据来提供图像

    原因:

    • 如果发送二进制数据会占用更多带宽,因此获取图像需要更多时间
    • 当你发送二进制数据时,前端的用户必须在&lt;img&gt;标签中指定它应该期望这样的二进制数据

    &lt;img src="data:image/&lt;format of the image&gt;;base64, &lt;actual base64 string&gt;" alt="alternate" /&gt;.

    【讨论】:

    • 那么我现在的方法是最好的?
    猜你喜欢
    • 2016-11-25
    • 2017-09-14
    • 1970-01-01
    • 2017-02-16
    • 2017-05-27
    • 1970-01-01
    • 1970-01-01
    • 2020-08-16
    • 2021-10-07
    相关资源
    最近更新 更多